Substituir caracteres especiais por sed

0

Eu tenho que substituir caracteres especiais usando shell, então eu uso sed, mas eu tenho alguns erros que eu não entendo.

<%_ by [@, ("_" = dash)
_%> by ]

para os dois primeiros caracteres, minha sintaxe é: sed -i y/\<%\/\]\/ test.htm funciona, mas aqui como eu posso adicionar o caractere traço? O segundo deve ser assim sed -i y/\%>\/\]\/ mas eu tenho esse erro bash: /]/: is a folder você pode me ajudar por favor

    
por iceman225 17.04.2015 / 18:54

2 respostas

1

Não tenho certeza do que você está tentando substituir (com um - ou _ no primeiro caso), mas isso funciona bem para mim:

$ echo "<%_" | sed 's/<%_/_/'
_
$ echo "<%_" | sed 's/<%_/-/'
-
$ echo "_%>" | sed 's/_%>/\]/'
]

Parece que você está escapando dos identificadores regex (o /).

    
por 17.04.2015 / 19:03
1

Você precisa citar o argumento e usar o comando s para executar a substituição de string. Você pode usar a opção -e para fornecer várias expressões de comando.

sed -i -e 's/<% /[@/' -e 's/ %>/]/' filename
    
por 17.04.2015 / 23:26

Tags