Para imprimir uma linha em particular, você pode usar sed
:
route -n | sed -n 2p
para imprimir a segunda linha.
sed
, o que é
Eu darei uma explicação curta e incompleta do que é sed
. Para uma descrição completa, sugiro ver sed
info pages (run info sed
).
sed
mean s tream ed itor , ou seja, um editor que pode atuar em um fluxo (ou canal) de dados de texto, embora possa atuar também em arquivos; substancialmente isso significa que (diferentemente de ed
) ele nunca pode voltar para uma linha anterior.
sed
, pois awk
lê uma linha por vez e aplica um script a essa linha para possivelmente modificá-la. No final do script, por padrão, a linha modificada é enviada para stdout. Então sed
vai na próxima linha.
Um script é uma sequência de par address-command, se a linha corresponder ao endereço, então o comando é executado.
O uso típico de sed
é realizar uma substituição de um padrão por algo, por exemplo,
command | sed 's/ *$//'
aqui, a string entre aspas simples é o script, consistindo em um único par endereço-comando. O endereço está faltando (ele apareceria antes do s
), nesse caso, o comando é aplicado por padrão a todas as linhas de entrada. s
é o comando e o restante da string são instruções específicas de comando, dizendo "substituto 0 ou mais ocorrência ( *
) de um caractere de espaço ( ) no final na linha (
$
) sem nada ( ou seja, removê-los) ".
Outros comandos úteis são p
e d
. O comando p
imprime a linha atual, isso é útil em combinação com a opção -n
, que modifica o comportamento padrão para imprimir a linha atual no final do script. Então, em
sed -n '2p'
o script é a string 2p
que consiste no endereço 2
e o comando p
, então a linha 2 será impressa, toda a outra linha não será impressa, devido à opção -n
.
O comando d
exclui uma linha, por exemplo
sed '3,6d'
excluiria todas as linhas do terceiro para o sexto. 3,6
é um intervalo de endereços. Observo que neste caso não se deve usar a opção -n
, porque queremos imprimir todas as outras linhas.
Por último, um endereço pode ser um padrão, como em
sed -n '/^#/p'
este comando imprime todas as linhas que começam ( ^
) com um caractere #
.