Remova as primeiras n linhas do arquivo com variável

2

O comando abaixo funciona para excluir as primeiras 3 linhas:

sed -i -e 1,3d t.txt

Então eu tentei substituir o 3 por uma variável em um script como abaixo

NrLines=$(wc -l t.txt)
sed -i -e 1,"$NrLines{d}" t.txt

e receba o seguinte erro:

sed: -e expression #1, char 13: unexpected '}'

O que estou fazendo de errado?

    
por tubos 31.05.2015 / 16:44

2 respostas

5

Parece que a substituição de comandos e as chaves são mal utilizadas.

NrLines=$(wc -l < t.txt)
sed -i -e 1,"${NrLines}d" t.txt
    
por 31.05.2015 / 17:03
1

Outra maneira de fazer isso usando tail (isso não é ótimo para arquivos grandes):

NrLines=3
<<< "$(< t.txt)" tail -n +$((NrLines+1)) > t.txt
    
por 31.05.2015 / 19:56