在awk脚本多场分离器(Multiple Field separator in awk script

2019-10-18 15:13发布

我有以下的代码,让我输出文件中的行和字数。 如何使用一个更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;

}

Answer 1:

您可以使用内置的变量“$ 0”和功能“长度”

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长度占换行符



Answer 2:

请注意,以该字段分隔脚本将依靠太多的“话”,因为字段这里考虑的话,每个空间成为一个字段分隔符。

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


文章来源: Multiple Field separator in awk script
标签: linux shell awk