Backslash является маскирующим в sed
узорах, поэтому буквальный возврат каретки вставляется. То, что вы хотите \\r
- это экранированный обратный слеш, за которым следует литерал r
.
Как использовать sed для замены целой строки на другую с символами в ней
Файл содержит следующую строку 19
send -- "old@example.com\r"
Я хочу изменить адрес электронной почты, поэтому я подумал и придумал это
sed -i.bak '19s/.*/send -- "new@example.com\r"/' ./a
это меняет строку 19, но то, что я получаю,
"end -- "new@example.com
Что происходит не так и как это исправить?
3 ответа на вопрос
Вместо того, чтобы выполнять поиск и замену, вы можете просто изменить 19-ю строку:
sed '19c\send -- "new@example.com\\r"'
Вы делаете это сложнее, чем нужно - просто измените адрес электронной почты, а не всю строку. Показывать:
$ echo 'send -- "old@example.com\r"' | sed 's/old@example\.com/new@example.com/' send -- "new@example.com\r"
Кстати, вы можете дополнительно использовать g
(глобальный) модификатор в конце командыs///
команды, если шаблон поиска может встречаться более одного раза в строке, и / или i
модификатор (игнорировать регистр), если вы хотите поиск без учета регистра - например, для использовать как: s/old@example\.com/new@example.com/ig
.
В любом случае, ваша команда будет выглядеть так:
sed -i.bak '19s/old@example\.com/new@example.com/' ./a
Если вам неизвестно, какой именно номер строки нужно изменить, укажите в качестве адреса строки регулярное выражение, а не номер строки:
sed -i.bak '/^send.*old@example\.com/ s/old@example\.com/new@example.com/' ./a
Еще проще изменить ВСЕ вхождения old@example.com в файле, просто не надо указывать адрес, и замена будет происходить в каждой строке файла.
sed -i.bak 's/old@example\.com/new@example.com/' ./a
Похожие вопросы
-
9
В чем разница между командами "su -s" и "sudo -s"?
-
4
Требуется хороший бесплатный образ Ubuntu Server VMWare
-
4
Каковы различия между основными дистрибутивами Linux? Я замечу?
-
-
2
Ограничить использование процессора для Flash в Firefox?
-
2
Как мне заставить мой микрофон работать под Debian GNOME?
-
2
Конки установки - образцы / идеи?
-
3
Каковы различия между оконными менеджерами Linux?
-
2
ThunderBird / Синхронизация освещения с SE k770i
-
4
Файловая система Linux
-
6
Полноэкранная медленная вспышка в KDE 4