我们必须编写 shell脚本 程序,该程序与wc
命令类似。
收到-l
,-c
和-w
作为选项。
除了Shell脚本语法;我可以使用wc -c
或{{1 }或wc -l
; 如果是 那么如何?
IMP:请勿在脚本中使用wc -w
答案 0 :(得分:3)
如果你可以使用grep
,那么模拟行数很容易:只计算匹配的东西总是会发生多少次:
grep -c '^' filename
这应该与wc -l
输出相同(但如果文件没有以换行符结尾,它可能会再报告一行)。
要获得单词数,您可以使用以下管道:
grep -o '[^[:space:]]\+' filename | grep -c '^'
您需要grep
支持-o
选项,该选项会将每个匹配的字符串打印到自己的行中。该表达式匹配所有非空间序列,并将它们组合成我们在前一种情况下使用的内容,只计算它们。
要获取字符数(wc -c
),您可以使用
LC_ALL=C grep -o . filename | grep -c '^'
如果您的语言环境支持UTF-8,则需要设置LC_ALL,否则您需要计算wc -m
。您需要在输出编号中添加换行符的数量,所以
echo $(( $( grep -c '^' filename )
+ $( LC_ALL=C grep -o . filename | grep -c '^' ) ))