Se eu usar cat -n text.txt
para numerar automaticamente as linhas, como usar o comando para mostrar apenas determinadas linhas numeradas.
text-processing
cat
Geckono1
fonte
fonte
tail
+head
Também pode fazer isso, como podeawk
Respostas:
Usar
sed
Uso
Para imprimir uma linha (5)
Para imprimir várias linhas (5 e 8)
Para imprimir um intervalo específico (5 - 8)
Para imprimir o intervalo com outra linha específica (5 - 8 e 10)
fonte
Uma maneira de fazer isso é usando
sed
:onde 11 é o número da linha que você deseja remover.
Ou para remover todos, exceto 11:
Também são possíveis intervalos:
E
cat -n
nem é necessário:fonte
Você pode usar o awk diretamente.
substituindo '1' pelo número da linha desejada.
fonte
Dependendo dos objetivos, gosto de head ou grep
cat /var/log/syslog -n | head -n 50 | tail -n 10
retornará as linhas 41 a 50.
ou
cat /var/log/syslog -n | grep " 50" -b10 -a10
mostrará as linhas de 40 a 60. O problema com o método grep é que você precisa usar a conta para preencher os números das linhas (observe o espaço)
Ambos são bastante úteis para analisar arquivos de log.
fonte
cat
Porém, nenhum dos exemplos precisacat
não pode fazer o que o OP querComo outros lhe mostraram, não há necessidade de usar
cat -n
. Outros programas farão isso por você. Se, no entanto, você realmente precisar analisar a saídacat -n
e mostrar apenas linhas específicas (por exemplo, 4-8, 12 e 42), poderá:Em
awk
,$1
é o primeiro campo, portanto, este comando imprime todas as linhas cujos primeiros campos são i) entre 4 e 8 (inclusive) ou ii) 12 ou iii) 42.Se você também deseja remover o campo adicionado por
cat -n
para obter as linhas originais do arquivo, você pode:fonte