awk脚本中的多字段分隔符

时间:2013-09-14 19:07:02

标签: linux shell awk

我有以下代码,它将输出作为文件中的行数和单词数。我怎么能再用一个FS(文件分隔符)来计算总字符数。 (输出应与wc file command相同)

BEGIN {
  FS="\n| ";

}

{

  for(i=1;i<=NF;i++)
   w++
   l++
}

END { 
  print "Total no of Lines:"l;
  print "Total no of words:"w;

}

2 个答案:

答案 0 :(得分:3)

请注意,使用该字段分隔符时,脚本将计算太多“单词”,因为字段在此处被视为单词,并且每个空格都成为字段分隔符。

此外,awk只能为正确的文本文件提供正确的结果,其中会观察到最大行长度等限制,最后一行以换行符结束。

脚本可以进一步简化

{ 
  w+=NF
  c+=length+1
}

END { 
  print "Total no of lines:" NR
  print "Total no of words:" w
  print "Total no of chars:" c 
}

答案 1 :(得分:1)

您可以使用内置变量“$ 0”和函数“length”

BEGIN {
  FS="\n| ";

}

{

  for(i=1;i<=NF;i++)
   w++
   l++
   c += length($0)+1
}

END { 
  print "Total no of Lines:"l;
  print "Total no of words:"w;
  print "Total no of chars:"c;

}

修改:添加+1来查看换行符