Auslassen der ersten Zeile aus einer Linux-Befehlsausgabe

167

Ich habe eine Anforderung, bei der ich die erste Zeile aus der Ausgabe von ls -latr "some path"Da ich total 136aus der folgenden Ausgabe entfernen möchte, weglassen möchte

Geben Sie hier die Bildbeschreibung ein

Also habe ich geschrieben, ls -latr /home/kjatin1/DT_901_linux//autoInclude/system | tail -qwas die 1. Zeile ausgeschlossen hat, aber wenn der Ordner leer ist, wird er nicht weggelassen. Bitte sagen Sie mir, wie ich die erste Zeile in einer Linux-Befehlsausgabe weglassen kann

AabinGunz
quelle

Antworten:

184

Pipe es zu awk:

awk '{if(NR>1)print}'

oder sed

sed -n '1!p'
Fredrik Pihl
quelle
20
oderawk 'NR>1'
Mitchus
23
auchsed '1d'
JoL
260

Das tailProgramm kann dies tun:

ls -lart | tail -n +2

Das -n +2bedeutet "in der zweiten Ausgabezeile durchgehen".

Donal Fellows
quelle
1
Beachten Sie, dass einige tailImplementierungen das -nFlag dafür erfordern , wie intail -n +2
Mat
Sie könnten auch verwenden find . -name . -o -ls -prune, aber das erzeugt etwas andere Ausgabe.
Donal Fellows
@Mat: So scheint es, obwohl es ohne funktioniert hat, als ich es versuchte (unter OSX).
Donal Fellows
Früher hat es mit coreutilsSchwanz gearbeitet, aber es wurde veraltet und dann entfernt. Sie erhalten jetzt tail: cannot open '+2' for reading: No such file or directory(Coreutils 8.7). Traurige Sache ist, dass andere Implementierungen nicht akzeptieren -n...
Mat
4
@Mat: Einige brauchen es, andere nehmen es nicht? Pfui! Ugh ugh ugh ugh! Das ist wiederlich.
Donal Fellows
23
ls -lart | tail -n +2 #argument means starting with line 2
Jeff Ferland
quelle
20

Dies ist ein schneller hackiger Weg : ls -lart | grep -v ^total.

Entfernen Sie grundsätzlich alle Zeilen, die mit "total" beginnen. lsDies sollte in der Ausgabe nur die erste Zeile sein.

Ein allgemeinerer Weg (für alles):

ls -lart | sed "1 d"

sed "1 d" bedeutet nur alles außer der ersten Zeile drucken.

wkl
quelle
3
Das grepFiltern für diese Aufgabe ist im Allgemeinen gefährlich. es könnte unerwartet zusammenpassen.
Donal Fellows
Manchmal ja, und ich denke, es ist nicht die beste Lösung ... aber dieser Befehl ls führt immer Einträge mit den Verzeichnisberechtigungen. Es ist nicht ideal, da grep weiterhin jede Zeile überprüft und sich bei anderen Flags anders verhält.
Jeff Ferland
1
Dies ist nur eine Semantik, aber technisch bedeutet dies, dass die erste Zeile aus dem Stream gelöscht wird.
John Morales
Ich hoffe, Sie haben keine Datei mit dem Namen total, über die Sie Bescheid wissen möchten
Amias