计算文本文件中两行之间的单词数

时间:2016-08-31 06:11:51

标签: bash shell scripting

正如标题所说,我想知道是否有更简单的方法来获取文本文件中两行之间的单词数,使用* nix上提供的文本处理工具。

例如,给定一个文本文件如下,

a bc ae
a b
ae we wke wew

之间的计数字,1-2 - > 5,2-3 - > 6。

2 个答案:

答案 0 :(得分:3)

您可以像这样使用sedwc

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

逻辑很简单: -

  1. 使用startend变量指定文件中的范围,它们是awk变量
  2. NR>=start && NR <=end提供从您需要的行循环的条件
  3. sum+=NF执行单词计算算术。 NF是一个特殊的awk变量,用于计算被IFS解除限制的字数,在这种情况下为空白。
  4. END{print sum}打印最终计数。
  5. GNU Awk 3.1.7

    上工作正常