Ferramenta Bash para obter a enésima linha de um arquivo
Existe um "canónico" forma de o fazer? I'tem usado head -n | tail -1
que faz o truque, mas I'tem se perguntado se existe'é uma ferramenta Bash que especificamente extrai uma linha (ou um intervalo de linhas) de um arquivo.
Por "canonical" quero dizer um programa cuja função principal é fazer isso.
535
3
O "cabeça" e o "tubo com "cauda" serão lentos para um arquivo enorme. Eu sugeriria
sed
como este:Onde
NUM
é o número da linha que você quer imprimir; assim, por exemplo,sed '10q;d' file
para imprimir a 10ª linha defile
.Explicação:
O
NUMq
desistirá imediatamente quando o número da linha forNUM
.O
d' irá apagar a linha em vez de imprimi-la; isto é inibido na última linha porque o
q' faz com que o resto do script seja pulado ao desistir.Se você tiver
NUM
em uma variável, você vai querer utilizar aspas duplas em vez de simples:irá imprimir a 2ª linha
2011ª linha
linha 10 até a linha 33
1ª e 3ª linha
e assim por diante...
Para adicionar linhas com sed, você pode verificar isso:
https://stackoverflow.com/q/15555781/#16246806
Você também pode usar o Perl para isso: