GNU/Linux >> Linux Esercitazione >  >> Linux

Ordinare ma mantenere la riga di intestazione in alto?

Ricevo l'output da un programma che prima produce una riga che è un gruppo di intestazioni di colonna e quindi un gruppo di righe di dati. Voglio tagliare varie colonne di questo output e visualizzarlo ordinato in base a varie colonne. Senza le intestazioni, il taglio e lo smistamento sono facilmente realizzabili tramite -k opzione per sort insieme a cut o awk per visualizzare un sottoinsieme delle colonne. Tuttavia, questo metodo di ordinamento combina le intestazioni di colonna con il resto delle righe di output. C'è un modo semplice per mantenere le intestazioni in alto?

Risposta accettata:

Rubare l'idea di Andy e trasformarla in una funzione in modo che sia più facile da usare:

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

Ora posso fare:

$ 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. Contando i caratteri di ogni riga con Wc?

  2. Rimuovere le righe di intestazione extra dal file, ad eccezione della prima riga?

  3. Elimina le righe consecutive in Csv con valori duplicati in un campo, ma mantieni l'ultima riga?

  4. Aggiungere il testo abbinato alla riga?

  5. Ordinamento sull'ultimo campo di una riga

Utilizzo di less per visualizzare i file di testo dalla riga di comando di Linux

Come utilizzare il comando superiore in Linux

Padroneggia la riga di comando di Linux

Come personalizzare il comando top di Linux

Mantenere solo la prima riga da ogni sequenza di righe consecutive che corrispondono a uno schema?

Come dividere un file e mantenere la prima riga in ciascuno dei pezzi?