2

我有以下代码,可以输出文件中的行数和单词数。我如何再使用一个可用于计算总字符数的 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;

}
4

2 回答 2

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 
}
于 2013-09-15T00:01:13.140 回答
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 添加到长度以考虑换行符

于 2013-09-14T19:23:09.227 回答