procura e substitui a inconsistência entre o vim e o sed

1

Usando o Ubuntu 12.04 e o vim 2.22.0, por que dentro do vim eu devo usar:

:9s/\d\+/1/

para alterar o primeiro dígito da linha mencionada para 1, mas não conseguiu usar o mesmo com sed como:

sed -i '9s/\d\+/1/' /home/file/foo

Ainda não recebo nenhum erro e nenhuma alteração no arquivo. Temos alguma inconsistência entre as funcionalidades do comando vim e sed?

    
por Amir 30.07.2013 / 23:20

1 resposta

4

sed e vim não estão relacionados (bem, mas está muito longe). Seus comandos de substituição são semelhantes, mas longe de serem idênticos. Ambos usam expressões regulares básicas, mas o vim tem suas extensões para ele, e o GNU sed tem outras extensões para ele.

\d corresponde a um dígito no vim, no GNU sed corresponde a d . Para corresponder a um dígito no sed, use [[:digit:]] ou [0-9] (e eles também funcionarão no vim).

\+ é também uma extensão no vim e no GNU sed. A maneira padrão de corresponder a um ou mais é usar \{1,\} .

    
por geirha 30.07.2013 / 23:27