Use sed para substituir uma string que contenha caracteres com significados especiais para sed

0

Eu quero procurar pela string

1 /value Error Code:12345/I

E substitua-o por

1 /deleted by user/i

Como posso fazer isso com sed ?

    
por Bala 20.07.2017 / 22:04

1 resposta

1

sed pode usar separadores de variáveis:

$ echo "1 /value Error Code:12345/I " | sed 's;/value.*/I;/deleted by user/i;'
1 /deleted by user/i

Mas se você tiver que usar / por qualquer motivo, você sempre pode prefixar \ a eles quando forem literais:

$ echo "1 /value Error Code:12345/I " | sed 's/\/value.*\/I/\/deleted by user\/i/;'
1 /deleted by user/i

Ou você pode abandonar sed e usar awk , com / como separador para os campos de entrada e de saída:

$ echo "1 /value Error Code:12345/I " | awk -F'/' 'BEGIN{OFS=FS}{$2="deleted by user";$3="i";print}'
1 /deleted by user/i
    
por Sergiy Kolodyazhnyy 20.07.2017 / 22:57