Com a versão mais recente do GNU sed
(vem com o Ubuntu), você pode combinar literalmente as novas linhas:
sed -z 's/#Set environment variable\nexport [^\n]\+\n\n//g' file.txt
-
A opção
-
-z
tratará as linhas de arquivos de entrada como terminadas por ASCII NUL em vez de novas linhas, portanto, podemos usar\n
para corresponder às novas linhas -
#Set environment variable\n
corresponderá à primeira linha (com nova linha) -
export [^\n]\+\n
corresponderá à segunda linha que começa comexport
-
Como a terceira linha está em branco, basta
\n
fazer -
Em seguida, substituímos o padrão inteiro correspondido com em branco para manter a parte desejada
Você quer sobrescrever o arquivo com o conteúdo modificado:
sed -zi.bak 's/#Set environment variable\nexport [^\n]\+\n\n//g' file.txt
O arquivo original será mantido como file.txt.bak
, se você não quiser usar apenas sed -zi
.
Aqui está um teste:
$ cat file.txt
#Set environment variable
export NAME=value
#some text
#Set environment variable
export NAME=value
check
value
export some=value
#Set environment variable
export NAME=value
foo bar
$ sed -z 's/#Set environment variable\nexport [^\n]\+\n\n//g' file.txt
#Set environment variable
export NAME=value
#some text
check
value
export some=value
foo bar