正如标题所说,我想知道是否有更简单的方法来获取文本文件中两行之间的单词数,使用* nix上提供的文本处理工具。
例如,给定一个文本文件如下,
a bc ae
a b
ae we wke wew
之间的计数字,1-2 - > 5,2-3 - > 6。
答案 0 :(得分:3)
您可以像这样使用sed
和wc
:
sed -n '1,2p' file | wc -w
5
和
sed -n '2,3p' file | wc -w
6
答案 1 :(得分:0)
您可以使用简单的awk
命令执行此操作: -
awk -v start='1' -v end='2' 'NR>=start && NR <=end{sum+=NF}END{print sum}' file
对于您提供的示例文件: -
$ cat file
a bc ae
a b
ae we wke wew
$ awk -v start='1' -v end='2' 'NR>=start && NR <=end{sum+=NF}END{print sum}' file
5
$ awk -v start='2' -v end='3' 'NR>=start && NR <=end{sum+=NF}END{print sum}' file
6
$ awk -v start='1' -v end='3' 'NR>=start && NR <=end{sum+=NF}END{print sum}' file
9
逻辑很简单: -
start
,end
变量指定文件中的范围,它们是awk
变量NR>=start && NR <=end
提供从您需要的行循环的条件sum+=NF
执行单词计算算术。 NF
是一个特殊的awk
变量,用于计算被IFS
解除限制的字数,在这种情况下为空白。END{print sum}
打印最终计数。在GNU Awk 3.1.7