下面是测试示例文件-rime.txt。
1.清点档案内的所有字数。
wc -w rime.txt
4081 rime.txt
awk 'BEGIN{num=0}{split($0, A);n=length(A);num=num+n;}END{print num}' rime.txt
4081
grep -Ec '\w' rime.txt
672为什么总单词是672与grep?
怎么用sed数?
2.每行数字
awk '{split($0, A);print length(A)}' rime.txt怎么用sed来做呢?
发布于 2017-04-09 15:01:57
grep是可数线,而不是单词,您永远不会为此使用sed,因为sed是用于单个行上的简单替换,仅此而已。
还有,那些awk脚本太荒谬了。编写第一个文件的正确方法是awk '{num+=NF} END{print num+0}'或使用GNU awk -v RS='[[:space:]]+' 'END{print NR+0}',第二个方法是awk '{print NF}'。
发布于 2017-04-09 13:28:07
发布于 2017-04-09 16:15:30
为了澄清你对漏字的疑虑,举个小例子-
$cat ff
hello vipin
kumar
good night清楚,3行,5个字。
先试试wc -w -
$wc -w ff
5 ff 你用过的grep命令-
$grep -Ec '\w' ff
3 在你的例子中,全线计数-
$wc -l < file.txt
833空白行总数-
$grep '^$' file.txt |wc -l
161非空白行总数-
$grep -v '^$' file.txt |wc -l
672这就是你看到672行的原因。
$echo $(expr 833 - 161)
672正如专家已经提到的,您不应该在这个操作中使用sed,grep \w将给出您的行计数,而不是单词计数。
https://stackoverflow.com/questions/43307160
复制相似问题