Para selecionar qualquer linha que contenha gold
do source.txt e substitua a primeira ocorrência de green
por red
:
$ sed -n '/gold/{s/green/red/; p}' source.txt
gold red white black blue
Para salvar isso em um arquivo:
sed -n '/gold/{s/green/red/; p}' source.txt >pol.txt
Como funciona
-
-n
diz ao sed para não imprimir as linhas, a menos que seja explicitamente solicitado. -
/gold/
seleciona linhas que correspondem à regexgold
. -
s/green/red/
executa a substituição -
p
imprime.
Usando o awk
Com a mesma lógica:
$ awk '/gold/{gsub(/green/, "red"); print}' source.txt
gold red white black blue
Usando o grep
Se formos forçados, por motivos ainda não explicados, a usar um pipeline do grep, tente:
$ grep -l --null "gold" source.txt | xargs -0 sed -n '/gold/s/green/red/p'
gold red white black blue