Apagando em stdin todas as instâncias de regexes definidas em um arquivo

1

Estou atrás de algo como uma combinação de sed 's/pattern//g' e grep -f patternfile.txt .

Basicamente, eu gostaria que o fluxo de entrada fosse removido de todas as instâncias dos padrões regex definidos em patternfile.txt (que contém uma regex por linha), para que

cat myinitialfile.txt | magiccommands -f patternfile.txt > mycleanfile.txt

    
por mitchus 10.12.2014 / 14:33

2 respostas

2
sed 's/^.*/s\/&\/\//' pattern > sed-pattern-file
sed -f sed-pattern-file myinitialfile.txt > mycleanfile.txt
    
por 10.12.2014 / 14:40
1

Como uma variação da resposta já aqui, é mais fácil, provavelmente, extrair o script diretamente de um canal:

sed 's|.*|s/&//g|' <patterns |
sef -f - infile >outfile

Dessa forma, você não precisa alterar o arquivo de padrões - ou qualquer outro - diretamente e pode, em vez disso, modificá-lo em fluxo para atender às suas necessidades.

    
por 11.12.2014 / 08:23