GNU/Linux >> Znalost Linux >  >> Linux

Řadit, ale ponechat řádek záhlaví nahoře?

Dostávám výstup z programu, který nejprve vytvoří jeden řádek, který je hromadou záhlaví sloupců, a poté hromadu řádků dat. Chci vyjmout různé sloupce tohoto výstupu a zobrazit jej seřazené podle různých sloupců. Bez hlaviček lze řezání a třídění snadno provést pomocí -k možnost sort spolu s cut nebo awk pro zobrazení podmnožiny sloupců. Tento způsob řazení však míchá záhlaví sloupců se zbytkem řádků výstupu. Existuje snadný způsob, jak ponechat záhlaví nahoře?

Přijatá odpověď:

Ukrást Andyho nápad a udělat z něj funkci, aby se snáze používal:

# 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]"
}

Teď můžu:

$ 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. Ponechat pouze první řádek z každé sekvence po sobě jdoucích řádků, které odpovídají vzoru?

  2. Smazat po sobě jdoucí řádky v CSV s duplicitními hodnotami v jednom poli, ale ponechat poslední řádek?

  3. Jak rozdělit soubor a zachovat první řádek v každém z kusů?

  1. Mít krávu na příkazovém řádku Linuxu

  2. Jak spustit GUI linuxové programy z příkazového řádku, ale odděleně od příkazového řádku?

  3. Jaký je uživatel debian-+?

  1. 8 tipů pro příkazový řádek Linuxu

  2. Přihlaste se do příkazového řádku Linuxu

  3. Pokročilé použití prohlížeče méně textových souborů v Linuxu