Sed - opção desconhecida para 's'

0

Eu executo o comando sed no meu script:

sed -i "${1}s/${2}=.*/${2}=${REPLY}/" $3

este é o eco:

sed -i 13s/log4j.appender.ROOT2.File=.*/log4j.appender.ROOT2.File=/app/TET/log.log/ /applis/DIAPASON/diapason1/conf/log4j.properties

Meu erro:

sed: -e expression n°1, character 61: unknown option for s ''

    
por Mercer 20.09.2013 / 16:59

2 respostas

6

Você tem vários caracteres / dentro da variável $REPLY , o que confunde sed .

Você pode escolher um delimitador alternativo para o comando s/// na maioria das versões de sed , portanto, se eu fosse assim, tentaria algo como:

sed -i "${1}s|${2}=.*|${2}=${REPLY}|" $3

Isso substitui o / para sed por | , de modo que os / em ${REPLY} não sejam (esperançosamente) interpretados por sed .

    
por 20.09.2013 / 17:04
0

Use qualquer caractere como um delimitador de comando s, Por favor, encontre o seguinte exemplo

sed -Ei "s|$k|$j|g" filename.txt
    
por 11.10.2017 / 20:30

Tags