Я пытаюсь заменить \" (обратная косая черта двойная кавычка) '(кавычкой) с помощью sed.
sed "s/\\\"/\'/g" file.txt
Команда не работает как ожидалось. Это заменяет весь "в текстовом файле, не только \".
Это делает то же самое как sed "s/\"/\'/g" file.txt
Я работаю над Mac OS X Leopard.
У кого-либо есть подсказка?
Вы имеете дело с печально известной проблемой цитирования оболочки. Попробуйте вместо s // g заключить в одинарные кавычки или добавьте дополнительный escape:
sed "s/\\\\\"/\'/g"
Проблемы с цитированием в bash - это весело.
$ cat input "This is an \"input file\" that has quoting issues." $ sed -e 's/\\"/'"'"'/g' input "This is an 'input file' that has quoting issues."
Обратите внимание, что для создания сценария sed три строки соединяются вместе:
s / \\ "/
'
/ g
Первая и последняя строки заключаются в одинарные кавычки, а середина заключена в двойные кавычки.
Команда Мэтью объединяет две строки вместо трех:
s / \\ "/
'/ g
, где первая заключена в одинарные кавычки, а вторая - в двойные. - цитируется.
не нужно использовать слишком много кавычек. \ 042 восьмеричный для "
и \ 047 восьмеричный для одинарных кавычек
awk '{gsub("\042","\047") }{print}' file