繁体   English   中英

awk脚本中的多字段分隔符

[英]Multiple Field separator in awk script

我有以下代码,可以输出文件中的行数和单词数。 我怎么能再用一个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;

}

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

此外, 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 
}

你可以使用内置变量“$ 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到长度以考虑换行

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM