首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我试图在多个集合中使用tr,但不确定如何使用

我试图在多个集合中使用tr,但不确定如何使用
EN

Stack Overflow用户
提问于 2014-02-25 02:58:04
回答 2查看 2.8K关注 0票数 3

我用过:

代码语言:javascript
复制
tr -dc [:alpha:] < $fileDoc | wc -c

去数所有的字母,

代码语言:javascript
复制
tr -dc ' ' < $fileDoc | wc -c

去计算所有的空格,

代码语言:javascript
复制
tr -dc '\n' < $fileDoc | wc -c

若要计数文本文档中的所有新行,请执行以下操作。

我现在想做的是,现在要做的是计数文档中的所有其他字符,我将称之为其他每一件事情。

以下是该文件的案文:

你好,这是一个测试文本文档。

代码语言:javascript
复制
123

!@#

是否有一种方法可以删除所有[:alpha:]\n找到的所有字符并计数其馀字符?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-25 03:05:38

这应该能起作用

代码语言:javascript
复制
tr -d '[:alpha:] \n'  < $fileDoc | wc -c

或者,如果您希望在空白的定义中包括制表符,那么也可以。

代码语言:javascript
复制
tr -d '[:alpha:][:space:]'  < $fileDoc | wc -c

根据OP的注释,删除字母、空格、数字和换行符,并计数所有剩余字符:

代码语言:javascript
复制
tr -d '[:alnum:][:space:]' < $fileDoc | wc -c

[:alnum:]帐户的字母和数字。[:space:]负责所有空格,包括换行符

票数 4
EN

Stack Overflow用户

发布于 2014-02-25 05:56:03

只需在这里张贴以供参考,如果您想一次完成所有操作,那么这个awk脚本应该可以工作:

代码语言:javascript
复制
awk -v FS='' '
{
    for(i=1; i<=NF; i++) {
        if($i ~ /[a-zA-Z]/) {alpha++};
        if($i == " ") {space++};
        if($i !~ /[A-Za-z0-9 ]/) {spl++}
    }
}
END {
    printf "Space=%s, Alphabets=%s, SplChars=%s, NewLines=%s\n", space, alpha, spl, NR
}' file
代码语言:javascript
复制
$ cat file
This is a text
I want to count
alot of $tuff
in 1 single shot
代码语言:javascript
复制
$ awk -v FS='' '
{
    for(i=1; i<=NF; i++) {
        if($i ~ /[a-zA-Z]/) {alpha++};
        if($i == " ") {space++};
        if($i !~ /[A-Za-z0-9 ]/) {spl++}
    }
}
END {
    printf "Space=%s, Alphabets=%s, SplChars=%s, NewLines=%s\n", space, alpha, spl, NR
}' file
Space=11, Alphabets=45, SplChars=1, NewLines=4
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22003685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档