Como posso remover a primeira linha de um arquivo com sed?

2

as seguintes linhas anexam o conteúdo de essay_i.txt ao final de essay1.txt;

touch essay1.txt
for (( i = 1 ; i <= 10 ; i++ )); do
sed '2p' essay_"${i}".txt >> essay1.txt
done

como devo alterá-lo para que a primeira linha de cada essay_i.txt não seja copiada (ou seja, apenas a linha de cópia 2- > end)?

    
por user2413 07.02.2011 / 17:42

1 resposta

8

Para suprimir a primeira linha, use '1d' (ou seja, linha 1, excluir):

touch essay1.txt
for file in essay_*; do
  sed '1d' $file >> essay1.txt
done

a saída será

~$ cat essay1.txt 
line 2 from essay 1
line 3 from essay 1
line 2 from essay 2
line 3 from essay 2
...

para todos os arquivos nomeados essay_* no diretório de trabalho atual.

Em vez de usar sed , você também pode usar tail para fazer este trabalho:

tail -n +2 $file >> essay1.txt

Onde +2 significa a partir da segunda linha ( -n 2 seria as duas últimas linhas).

    
por Stefano Palazzo 07.02.2011 / 17:56