eu entendo sed
vai
- Aplica todas as instruções na linha 1, depois na linha 2...
- As instruções anteriores podem alterar o espaço de padrão para que a próxima instrução opere nesse espaço de padrão modificado (em vez do texto original)
O exemplo é:
arquivo amostra.txt
pig cow
Comando
sed -e 's/pig/cow/; s/cow/horse/;' sample.txt
Saída esperada
horse horse
Saída real
horse cow
O motivo da minha saída esperada é:
- A primeira instrução substituiu porco por vaca no espaço do padrão
- A segunda instrução substituiu 2 porcos por 2 cavalos no espaço padrão
O comando de substituição
s
por padrão substituirá apenas a primeira correspondência, a menos que algum sinalizador seja usado após o delimitador final de substituição, como emO
g
sinalizador dizsed
para repetir a substituição tantas vezes quanto possível para qualquer correspondência não sobreposta da expressão regular.Outro conjunto de sinalizadores para o
s
comando (não aplicável aqui, mas pode ser útil conhecer) são os sinalizadores de um dígito, com os quais você pode optar por substituir a enésima correspondência do padrão, como emO acima mudaria o terceiro
a
para umA
em cada linha de entrada.Consulte o manual para
sed
(man sed
) em seu sistema para obter mais informações.