2016-08-04 3 views
0

Awkを使用して特定の列の最初の100行を合計するにはどうすればよいですか?私は書いたAwkを使用して特定の列の最初の100行を合計するにはどうすればよいですか?

awk 'BEGIN{FS="|"} NR<=100 {x+=$5}END {print x}' temp.txt 

しかし、これは処理に多くの時間がかかります。結果をすぐに与える他の方法はありますか?

+2

"処理に時間がかかる"とはどういう意味ですか?あなたの入力はどれくらいですか?あなたがコマンドラインに 'time'を前置するとどうなるでしょうか? –

答えて

2

必要な最初の100のレコードの後だけexit

awk -v iwant=100 '{x+=$5} NR==iwant{exit} END{print x+0}' test.in 

は、スピンのためにそれを取る:

$ for i in {1..1000}; do echo 1 >> test.in ; done # thousand of records 
$ awk -v iwant=100 '{x+=$1} NR==iwant{exit} END{print x+0}' test.in 
100 
'{x+=$5} NR==iwant{exit} END{print x+0}' 
+0

10ポイント増えて666に! –

+0

それは凶悪な評判です – fedorqui

+0

私はそれを得ました。うまくいけばそれは固執しません。 –

1

あなたは常に入力トリムと同じスクリプトを使用することができます

head -100 file | awk ... your script here ... 
関連する問題