GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Sortieren, aber Kopfzeile oben lassen?

Ich erhalte eine Ausgabe von einem Programm, das zuerst eine Zeile mit einer Reihe von Spaltenüberschriften und dann eine Reihe von Datenzeilen erzeugt. Ich möchte verschiedene Spalten dieser Ausgabe ausschneiden und nach verschiedenen Spalten sortiert anzeigen. Ohne die Header wird das Schneiden und Sortieren einfach über das -k bewerkstelligt Option zum sort zusammen mit cut oder awk , um eine Teilmenge der Spalten anzuzeigen. Bei dieser Sortiermethode werden jedoch die Spaltenüberschriften mit den restlichen Ausgabezeilen gemischt. Gibt es eine einfache Möglichkeit, die Kopfzeilen oben zu halten?

Akzeptierte Antwort:

Andys Idee stehlen und sie zu einer Funktion machen, damit sie einfacher zu verwenden ist:

# print the header (the first line of input)
# and then run the specified command on the body (the rest of the input)
# use it in a pipeline, e.g. ps | body grep somepattern
body() {
    IFS= read -r header
    printf '%s\n' "$header"
    "[email protected]"
}

Jetzt kann ich:

$ ps -o pid,comm | body sort -k2
  PID COMMAND
24759 bash
31276 bash
31032 less
31177 less
31020 man
31167 man
...

$ ps -o pid,comm | body grep less
  PID COMMAND
31032 less
31177 less

Linux
  1. Lassen Sie sich mit sort in der Befehlszeile sortieren

  2. Haben Sie eine Kuh an der Linux-Befehlszeile

  3. Boxen Sie sich auf der Linux-Befehlszeile ein

  4. Fortgeschrittene Verwendung des Less-Text-Dateibetrachters in Linux

  5. Nur die erste Zeile aus jeder Folge aufeinanderfolgender Zeilen beibehalten, die einem Muster entsprechen?

Verwenden von less zum Anzeigen von Textdateien in der Linux-Befehlszeile

So verwenden Sie den obersten Befehl unter Linux

Meistern Sie die Linux-Befehlszeile

So passen Sie den Linux-Befehl top an

Sortieren nach dem letzten Feld einer Zeile

Wie starte ich GUI-Linux-Programme von der Befehlszeile aus, aber getrennt von der Befehlszeile?