Você deseja usar outras ferramentas para realizar substituições, como sed
:
sed -n 's/ \(runs\?\) / **** /p' input.txt > output.txt
Ou Perl:
perl -ne 's/ (runs?) / **** /&&print' input.txt > output.txt
Estou tentando usar o grep para encontrar todas as strings correspondentes no arquivo e enviá-las, no contexto da linha, para outro arquivo, adicionando alguns tipos de marcas (idealmente dois asteriscos) em cada lado da correspondência.
Por exemplo, tenho input.txt
arquivo com o seguinte concurso:
Dog walks in the park
Man runs in the park
Man walks in the park
Dog runs in the park
Dog is still
They run in the park
Woman runs in the park
Então, eu pesquiso grep com redirecionamento para o arquivo:
grep -P ' runs? ' input.txt > output.txt
Cria output.txt
com o seguinte concurso:
Man runs in the park
Dog runs in the park
They run in the park
Woman runs in the park
O que eu gostaria de fazer é obter essa saída:
Man **runs** in the park
Dog **runs** in the park
They **run** in the park
Woman **runs** in the park
Ou seja, para cada correspondência no contexto, adicione dois asteriscos em torno dessa correspondência.
Eu sei que posso obter apenas correspondências adicionando -o
option:
grep -P ' runs? ' input.txt > output.txt
mas preciso vê-los no contexto.
Eu também sei que posso destacar essas correspondências na sessão interativa executando isso:
GREP_OPTIONS='--color=auto'
mas estou usando o grep dentro do script bash, então não tem utilidade para mim.
Então, eu estou querendo saber se existe alguma maneira de marcar essas correspondências no arquivo de saída, diretamente com o grep. Eu sei que eu poderia mais tarde canalizar a saída do grep para um comando diferente para conseguir isso, mas eu preferiria usar alguma opção do grep. É possível? Se não, qual é a maneira mais direta de alcançar o resultado desejado combinando o grep com outras ferramentas?
Você deseja usar outras ferramentas para realizar substituições, como sed
:
sed -n 's/ \(runs\?\) / **** /p' input.txt > output.txt
Ou Perl:
perl -ne 's/ (runs?) / **** /&&print' input.txt > output.txt