2012-03-11 6 views
2

引数としていくつのファイルがあるのか​​をカウントするawkスクリプトを作成したいと思います。BEGINまたはENDでカウンタを使用すると結果は常に1になります。 awkは私がパラメータとして与えるファイルをマージしますか?awk - ファイルの内容をカウントする

どんなに私は、引数として与えてどのように多くのファイルが次のスクリプトをプリント「1」 (「n」は、すべてのファイルにあるどのように多くの単語カウントするために使用されます)

BEGIN {nrFiles++} 
{ n+=NF} 
END {print nrFiles} 

、最終結果:あなたの時間

+0

ファイルが空であっても動作する必要がありますか? –

+0

が指定されていませんが、ARGC変数(コマンドライン引数の数を格納しています)とARGC = 4の3つのファイルを渡しています。私はこの権利を使うことができると思いますか? – NiCU

+0

-vなどの他のパラメータもARGCカウントに含められます。 –

答えて

2
$ awk 'BEGIN { print ARGC - 1 }' file1 file2 file3 
3 
2

ため

{ n+=NF} 
END {print "Number of files=",ARGC-1, "\nNumber of words=",n,"\nMean number of words=",n/(ARGC-1) } 

おかげで、あなたは、GNU AWKをお持ちの場合さらに:

gawk 'BEGINFILE {n++; nextfile} END {print n}' * 
関連する問題