Eu quero obter apenas digamos terceira linha de df -h
saída.
Que tipo de comando devo usar?
command-line
text-processing
emrecnl
fonte
fonte
Respostas:
Isso produzirá a terceira linha, independentemente do conteúdo.
fonte
df -h|sed -n 3p
.O
df
comando realmente aceita um argumento para identificar o sistema de arquivos que você deseja. Então você pode usar, por exemplo,df /home
oudf /dev/sda3
.Se você pretende analisar a saída de um script, convém usá
df -P
-lo para garantir que ele nunca seja agrupado em várias linhas. Portanto, por exemplo, você poderia usardf -Ph /home | tail -n +2
(mas se estiver analisando a saída de um script, esteja ciente da possibilidade de nomes de arquivos com espaços)fonte
df /home
fornece um cabeçalho. Você está interpretando a finalidade do usuário. Tu podes estar certo. Você pode estar errado, quem sabe?tail -n +2
remove o cabeçalho.Você pode usar uma combinação de
head
etail
:Ou
Mas observe que,
df
permite filtrar a saída a partir das opções emdf
si, você deve examiná-las primeiro antes de usar qualquer comando externo.Verifique
man df
.fonte
O Awk é uma ferramenta de processamento de texto, portanto é apropriado para esta tarefa
fonte
Presumo que você não esteja necessariamente procurando a terceira linha, mas a linha que menciona um disco específico (por exemplo
/dev/sda3
) ou um ponto de montagem específico (por exemplo/home
).Portanto, em vez de apenas exibir a terceira linha, que é insegura porque a ordem de saída pode mudar e você pode obter um resultado diferente, é possível filtrar a saída pelo conteúdo e mostrar apenas as linhas que correspondem a um padrão específico ou que contêm uma palavra-chave.
Sua ferramenta para isso é
grep
.Por exemplo, se você quiser a linha sobre o dispositivo
/dev/sda3
, digite:Se você deseja que a linha mencione seu diretório inicial como ponto de montagem, use:
fonte
df -h /dev/sda3
oudf -h /home
(o último funciona mesmo que não seja um ponto de montagem).Você também pode usar
perl
:O
$.
é o número da linha atual, para que você possa imprimir a enésima linha comperl -ne 'print if $.==N'
.fonte
Minha primeira idéia seria uma construção de cabeça-cauda.
Exemplo:
head -3
faz com que a saída pare após três linhas e produztail -1
somente a última linha.Como alternativa, se você souber como será a saída, também poderá
grep
encontrar linhas que contenham uma determinada string.fonte