Sed: Apague entre as primeiras n linhas aquelas com uma string dada nelas

2

Eu dei uma string e um arquivo. Eu tenho que apagar entre as primeiras 30 linhas aquelas que têm a string dada. Tentei algo como sed -i '/pattern/1,30d' filename Ainda dá erros. Mais especificamente, o que eu quero é sed analisar apenas as primeiras 30 linhas, e se encontrar o padrão dado, excluir a linha.

    
por MEZesUBI 08.06.2014 / 19:38

2 respostas

4

Pelo menos com o GNU sed, parece ser possível fazer

sed '1,30{/pattern/d}' file

Um teste reduzido: dado file as

some line
pattern
other line
some line
pattern
other line

então

$ sed '1,3{/pattern/d}' file
some line
other line
some line
pattern
other line
    
por 08.06.2014 / 19:52
1

Você pode combinar sed com head e tail :

( head -n30 file | sed '/pattern/d' ; tail -n+31 file ) > newfile

ou use Perl:

perl -i~ -ne 'print if $. > 30 or not /pattern/' file
    
por 08.06.2014 / 19:44

Tags