我有几个文本文件,我想计算一个字母在每个文件中出现的次数?
具体来说,我想使用 UNIX shell 来执行此操作,格式为:cat file | .... 做东西...
有没有办法让 wc 命令执行此操作?
我有几个文本文件,我想计算一个字母在每个文件中出现的次数?
具体来说,我想使用 UNIX shell 来执行此操作,格式为:cat file | .... 做东西...
有没有办法让 wc 命令执行此操作?
grep char -o filename | wc -l
另一种选择:
tr -d -C X <infile | wc -c
其中 X 是要计算的字符或字符串,infile 是输入文件。
还有awk:
$ echo -e "hello world\nbye all" | awk -Fl '{c += NF - 1} END {print c}'
5
更改-Fl
为-F<your character>
。
这通过将字段分隔符设置为由 指定的字符-F
,然后累积每行上的字段数 - 1(因为如果有一个分隔符,则有两个字段 - 但我们应该只计算 1)。
回声“a/b/c/d/e/f/g”| awk -F"/" '{打印 NF}'
这将给出字符“/”的出现次数
awk '{ printf "%s\n", gsub( "ur_char", "oth_char", $0 ) }' < your_file_name > output.txt
您也可以添加当前行号的计数以获取 awk 中的行号。
替代 grep:
sed 's/[^x]//g' filename | tr -d '\012' | wc -c
x
您要计算的字符在哪里。
在这种情况下,我正在计算字符“|”:
expr `wc -c < filename` \- `tr -d \| < filename | wc -c`
您可以轻松尝试:
grep -c 'YOUR LETTER' YOUR FILE
这是另一种方式
cat input_file | \
awk 'BEGIN {FS="x"; var=0 } \
{if (NF>0){ var=var + (NF-1) } } \
END{print var}'
其中 X 是要计算的字符或字符串,infile 是输入文件
试试看
grep [PATTERN] -o [FILE] | wc -l
如果不需要,请不要使用 cat 。