Corte linhas específicas de um arquivo e cole-as no final de outro arquivo

0

Suponha que eu queira cortar mais de um intervalo de linhas de um arquivo (por exemplo, linhas 1-500, 1029-1729 e 2696-3446), acrescentando valores no final de outro arquivo (output.txt) e eliminando esses valores do primeiro arquivo. A origem é um arquivo com 9277 linhas, eu quero cortar algumas delas, eliminando-as do arquivo original e colando-as em outro arquivo. Isso é possível via linha de comando?

    
por Anselmo Ferreira 29.05.2018 / 10:34

2 respostas

3

Usando o sed, você pode escrever um conjunto de linhas em um arquivo diferente, excluindo-o do arquivo atual da seguinte forma:

sed -i -e 'N, M { w output.txt
d }' input.txt

em que N e M são os números de linha. A opção -i faz sed salvar as alterações no arquivo de origem e aqui o comando d é excluído dessas linhas. Ao mesmo tempo, w output.txt faz com que as linhas selecionadas sejam gravadas em output.txt . E sim, essas são duas linhas separadas: sed requer que o nome do arquivo do comando w seja até uma nova linha .

Então você pode fazer algo como:

cmd=' { w output.txt
d }'
sed -i -e "1,500 $cmd" -e "1029,1729 $cmd" -e "2696,3446 $cmd" input.txt
    
por muru 29.05.2018 / 11:20
1

possível!

  1. copie linhas para dest.file com saída de grep 'pattern' src.file >> dest.file

  2. redirecionada
  3. excluir linhas de src.file com sed -i '/pattern/d' src.file

por cmak.fr 29.05.2018 / 11:04