Usando vários comandos sed para manipulação de texto

Usando vários comandos sed para manipulação de texto

Eu tenho um arquivo bash no qual gostaria de fazer várias alterações.

sed -i 's/      /    /g' testfile
sed -i -e 's/#[a-z]$//' -e '/^$/d' testfile
sed -i 's/ *$//' testfile
sed '/##=/ r header' testfile

No primeiro comando gostaria de substituir TAB por espaços e depois remover comentários (também existem comentários, que começam com ##) e linhas vazias. Depois disso, gostaria de inserir um arquivo após um padrão especificado no meu arquivo. Há algo errado com a ordem dos comandos?

Responder1

você pode dar várias instruções em uma única dose de sed, por exemplo:

sed 's/\t/    /g;/^ *$/d;s/^#/NODIESE/' testfile

esta única linha

  1. substitua tabulação por espaço
  2. excluir linha que começa com material vazio (ou linha vazia)
  3. substitua Dash no início pela palavra NODIESE

portanto, seu arquivo de teste é processado apenas uma vez e você inicia o sed apenas uma vez.

informação relacionada