#  > Desenvolvimento >  > Linguagens de Programação >  >  Remover conjunto de linhas

## dsalvi

Olá!

Estou querendo remover um conjunto de linhas em shell script (/bin/bash) após um determinado padrão.

Exemplo: Remover a zona _hello.com.br_ do named.conf.



```
cat named.conf | grep -A6 "zone \"hello.com.br\""
```

 
Esse comando me retorno o bloco de linhas que deve ser excluído... mas preciso o contrário. Usando a opcao -v do _grep_ não adianta, parece que não funciona em conjunto com a opção -A.



```
cat named.conf | grep -v -A6 "zone \"hello.com.br\"" > novo_named.conf
```

 
Alguma dica? Usar o _sed_?

Grato.

flw...

----------


## fabiano_linuxadmin

Tendo o arquivo teste.txt com o seguinte conteudo:

teste
linha a remover
teste
teste
outra linha



cat teste.txt | sed '/linha a remover/d' > novoarquivo.txt

O novoarquivo.txt ficará sem a "linha a remover"

----------


## dsalvi

Valeu.... mas quero remover, além da linha com o texto conhecido, um determinado número de linhas abaixo desse texto...

Ex:

texto conhecido para remover
desconhecido
desconhecido
desconhecido
desconhecido

>> Preciso remover todo o conjunto acima...

flw...

----------


## dsalvi

Pesquisando o padrão de endereços do SED, acredito ter encontrado a solução:



```
sed '/texto/,+3d' named.conf
```

 
flw..

----------


## sarna

Eu também estou precisando desse comando..
Já tentei assim..


```
echo $(sed -n '/^remove esta linha$/!p' arquivo.txt) > arquivo.txt
```

 Só que ele transforma o arquivo com o conteúdo

[list]linha
linha
remove esta linha
linha[/list:u]

em

[list]linha linha linha[/list:u]

----------


## 1c3m4n

da uma olhada nesse site
http://aurelio.net

lah tem um porrada de coisa sobre expressoes regulares

----------

