2

ファイル内の行数と単語数として出力を提供する次のコードがあります。合計文字数をカウントするために使用できるもう 1 つの 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 に答える