Ich habe einen Befehl:
$ awk '{ print length($0); }' /etc/passwd
Es gibt die Anzahl der Zeichen jeder Zeile in einer passwd- Datei aus:
52
52
61
48
81
58
etc.
Wie kann ich die Anzahl der Zeichen nur für die ersten n Zeilen drucken?
Zum Beispiel - für die ersten 3 Zeilen würde es etwas geben wie:
52
52
61
command-line
text-processing
awk
bambosze_babuni
quelle
quelle
awk '(NR<=line) && length($0) {print length($0)}' line=3 file
Antworten:
Sagen Sie
awk
zu beenden, wenn genügend Zeilen gelesen wurden:Beachten Sie, dass diese Lösung leere Zeilen ignoriert, jedoch nicht für die Zeilenanzahl.
quelle
Eine direkte Awk-Version (nicht so effizient wie @ Thors), aber etwas klarer:
quelle
awk '{ print length } NR>=3 { exit }' /etc/passwd
, würde ich es positiv bewerten.Sie können es
awk
nur mit einem Befehl ausführen , wie von @Thor und @JJoao (+1 von mir) beschrieben.Sie können
awk
undhead
mit-n
folgenden Parametern die Anzahl der Zeilen wie unten beschrieben kombinieren :Vielen Dank für den Vorschlag von @Maerlyn, in dieser Reihenfolge auszuführen:
head | awk
zB Sie erhalten die ersten 3 Zeilen mit:
Hauptmann
quelle
head -n3 /etc/passwd | awk
damit awk nicht die gesamte Datei verarbeiten muss.head
.head
war die erste funktionierende Lösung, die mir in den Sinn kam. Ich habe @Thor, @JJoao Antwort, dieawk
nur Lösung verwendet, positiv bewertet .