Detectando a falha no meu comando sed

0

Estou criando um comando para substituir todas as instâncias de ; f. to , (frequent). . Então, eu escrevi sed -i 's:;[:space:]f.:,[:space:](frequent).:g' sem nenhuma alteração, então eu escrevi sed -i 's:; f.:, (frequent).:g' para descobrir apenas que ela substitui todas as instâncias de f que foram gravadas depois de ; , transformando ; find em , (frequent).ind

Alguém por favor me avisará sobre minha culpa e como corrigi-la?

    
por 22lk94k943 only 05.06.2013 / 13:59

1 resposta

1

O problema no primeiro caso é a citação: Se você quiser usar : como o separador, não poderá usá-lo sem aspas nos espaços de caracteres. Além disso, . tem um significado especial em uma expressão regular - combina qualquer caractere. Para corresponder ao ponto literal, use \. . Além disso, [:space:] deve ser usado dentro de uma classe de caracteres, então você deve usar [[:space:]] . Finalmente, as classes de caracteres não têm significado na parte de substituição da expressão.

Isso deve funcionar:

sed 's/;[[:space:]]f\./, (frequent)./g'
    
por choroba 05.06.2013 / 14:09