Com GNU sed
, que suporta substituição de todas as ocorrências de contagem particular
$ echo label=\"123 \"456\" 789\" \"AB C\" e f gh |
sed -E 's/"/\"/2g; s/\("[^"]*)$//'
label="123 \"456\" 789\" \"AB C" e f gh
Todos "
(espera primeiro "
) são substituídos por \"
e, em seguida, \
é removido do último \"
Se GNU sed
não estiver disponível, remova \
do primeiro \"
também
$ echo label=\"123 \"456\" 789\" \"AB C\" e f gh |
sed -E 's/"/\"/g; s/\"/"/; s/\("[^"]*)$//'
label="123 \"456\" 789\" \"AB C" e f gh
Observação: algumas versões sed
podem precisar de -r
em vez de -E
Com perl
$ echo label=\"123 \"456\" 789\" \"AB C\" e f gh |
perl -pe 's/(^[^"]*"|"[^"]*$)(*SKIP)(*F)|"/\"/g'
label="123 \"456\" 789\" \"AB C" e f gh
Aqui, a string até o primeiro "
e a string do último "
até o final da linha são ignorados enquanto os "
restantes são substituídos por \"