2016-08-04 4 views
0

Wie summiere ich die ersten 100 Zeilen einer bestimmten Spalte mit Awk? Ich schriebWie summiere ich die ersten 100 Zeilen einer bestimmten Spalte mit Awk?

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

Aber das dauert viel Zeit zu verarbeiten; Gibt es einen anderen Weg, der schnell zum Ergebnis führt?

+2

Was meinst du mit "viel Zeit zu verarbeiten"? Wie groß ist dein Input? Was siehst du, wenn du der Befehlszeile "Zeit" vorlegst? –

Antwort

2

Gerade exit nach den erforderlichen ersten 100 Datensätze:

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

Nehmen Sie es für einen Spin-out:

$ 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 weitere Punkte und ich bin bei 666! –

+0

Das ist ein böser Ruf – fedorqui

+0

Ich habe es. Hoffentlich wird es nicht haften. –

1

Sie die Eingabe immer trimmen und verwenden das gleiche Skript

head -100 file | awk ... your script here ... 
Verwandte Themen