Como produzir linhas de saída 800-900 de um arquivo com um comando Unix?
-
22-09-2019 - |
Pergunta
Quero produzir todas as linhas entre A e B em um arquivo.
Isso funciona, mas parece um exagero:
head -n 900 file.txt | tail -n 100
Minha falta de conhecimento do Unix parece ser o limite aqui. Alguma sugestão?
Solução
sed -n '800,900p' file.txt
Isso irá imprimir (p
) Linhas 800 a 900, incluindo a linha 800 e 900 (ou seja, 101 linhas no total). Não imprimirá outras linhas (-n
).
Ajuste de 800 a 801 e/ou 900 a 899 para fazer com que faça exatamente o que você pensa "entre 800 e 900" deve significar no seu caso.
Outras dicas
Encontrou uma maneira mais bonita: usando sed, para imprimir apenas linhas entre A e B:
sed -n -e 800,900p filename.txt
Da postagem do blog: Usando sed para extrair linhas em um arquivo de texto
Uma maneira de usar é encontrar (e diff) seções semelhantes de arquivos:
sed -n -e 705,830p mnetframe.css > tmp1; \
sed -n -e 830,955p mnetframe.css > tmp2; \
diff --side-by-side tmp1 tmp2
O que me dará uma boa comparação lado a lado de seções semelhantes de um arquivo :)