1

awkを使用してファイル内の文字数をカウントする次のコードがあります。 ただし、 file:abc
でカウントされるため、改行はカウントされません$ wc file

12345
12345
12345
12345
12345

awk コマンド:

$ awk 'BEGIN{FS=""}{for(i=1;i<=NF;i++)c++}END{print "total chars:"c}' abc


これは私にo/pを与えます

Total char:25

しかし、同じabcファイルを実行すると 、一度に2つのファイルセパレーターを使用できるかどうかの提案wc abcとしてo/pが表示されます???30 characters

4

3 に答える 3

5

RTこれは、 @ konsolebox の懸念に対処するために (GNU awk for を使用して) 改行で終わらない可能性のあるファイルを処理する 1 つの方法を示す @Scrutinizer のソリューションに基づいています。

gawk '{t+=length+(RT?1:0)} END{print t}' file

または、より効率的に、@ konsolebox が指摘したように:

gawk '{t+=length} END{print t+NR-(RT?0:1)}' file

空のファイルに対応するには:

gawk '{t+=length}END{print t+NR-(!RT&&NR?1:0)}'
于 2013-09-15T14:25:04.350 に答える