Come faccio a recuperare solo la linea necessaria dall'output del terminale?

16

Voglio solo dire una terza riga di df -h output.

Che tipo di comando dovrei usare?

    
posta emrecnl 14.06.2016 - 15:37

7 risposte

31

Questo produrrà la 3a riga, indipendentemente dal contenuto.

df -h | sed -n 3p
    
risposta data bc2946088 14.06.2016 - 15:41
16

Il comando df accetta in realtà un argomento che identifica il filesystem che vuoi. Quindi potresti utilizzare, ad esempio, df /home o df /dev/sda3 .

Se intendi analizzare l'output per uno script, ti consigliamo di utilizzare df -P per garantire che non si sposti mai su più righe. Ad esempio, potresti utilizzare df -Ph /home | tail -n +2 (ma se stai analizzando l'output per uno script, tieni presente la possibilità di nomi di file con spazi in essi)

    
risposta data Random832 14.06.2016 - 18:05
14

Puoi utilizzare una combinazione di head e tail :

df -h | head -3 | tail -1

o

df -h | tail -n +3 | head -1

Ma nota che, df permette di filtrare l'output dalle opzioni di df stesso, dovresti guardarli prima di usare qualsiasi comando esterno.

Verifica man df .

    
risposta data heemayl 14.06.2016 - 15:43
10

Awk è uno strumento di elaborazione del testo, quindi è appropriato per questa attività

df -h | awk 'NR == 3'
    
risposta data Sergiy Kolodyazhnyy 14.06.2016 - 15:47
6

Suppongo che tu non stia necessariamente cercando la terza riga, ma per la linea che menziona un disco specifico (ad esempio /dev/sda3 ) o un punto di montaggio specifico (ad esempio /home ).

Quindi, invece di visualizzare solo la terza riga, che non è sicura perché l'ordine di output potrebbe cambiare e potresti ottenere un risultato diverso, puoi filtrare l'output in base al contenuto e mostrare solo le righe che corrispondono a un modello specifico o contenere una parola chiave .

Il tuo strumento per questo è grep .

Ad esempio, se desideri la riga relativa al dispositivo /dev/sda3 , devi digitare:

df -h | grep '/dev/sda3'

Se vuoi che la linea indichi la tua home directory come punto di montaggio, usa:

df -h | grep '/home'
    
risposta data Byte Commander 14.06.2016 - 15:50
6

Potresti anche utilizzare perl :

df -h | perl -ne 'print if $.==3' 

Il $. è il numero di riga corrente, quindi puoi stampare la linea Nth con perl -ne 'print if $.==N' .

    
risposta data terdon 14.06.2016 - 15:54
2

La mia prima idea sarebbe un costrutto testa-coda.

Esempio:

df -h | head -3 | tail -1

head -3 fa arrestare l'output dopo tre righe e tail -1 genererà solo l'ultima riga.

In alternativa, se lo sai, come apparirà l'output, potresti anche utilizzare grep per trovare le righe contenenti una determinata stringa.

    
risposta data Wayne_Yux 14.06.2016 - 15:43

Leggi altre domande sui tag