Получение действительно странного поведения с помощью sed в Win7: руководство говорит, что команда объемного замещения с одинарной кавычкой (') - отклоняет, допускает только двойную кавычку ("). Плюс я хочу изменить двойную кавычку в файле на другой символ

  • sed "s/"/Q/"- результат неизвестен
  • sed "s/\"/Q/"- неверный аргумент результата
  • sed "s/'/Q/" - результат без изменений
  • sed "s/\'/Q/" - результат добавляет "Q" в конец строки - обрабатывая \' как маркер конца строки $

Я успешно использовал sed в SCO Unix - что я делаю не так?

2 ответа2

0

sed - версия показывает 4.2.1, и я проверил, gnuwin32 не Cygwin's.

Это создает файл аа с цитатой в нем

C:\blah>copy con a.a
"^Z
Overwrite a.a? (Yes/No/All): y
        1 file(s) copied.

C:\blah>cat a.a
"
C:\blah>sed "s/\"/Q/" a.a
Q

повторить цитату немного смешно, но это можно сделать с помощью ^"

C:\blah>echo " | sed "s/\"/Q/"
" | sed "s/\"/Q/"

C:\blah>echo ^" | sed "s/\"/Q/"
Q

Но вам даже не нужно окружать все выражение замены sed кавычками

C:\blah>echo ^" | sed s/\"/Q/
Q

C:\blah>sed s/\"/Q/ a.a
Q
C:\blah>
-1

Я поместил этот pepe "el toro" в файл oo.txt и с помощью этой команды (используя sed из проекта GNUwin32) sed -i "s/\"/Q/g "oo.txt

Я получаю этот pepe Qel toroQ в файле oo.txt и некоторых мусорных файлах, но я думаю, что он работает для вас.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .