Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Замена строки со слешами через sed в файле?  (Прочитано 2320 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Electricity

  • Автор темы
  • Активист
  • *
  • Сообщений: 250
    • Просмотр профиля
Здравствуйте.
Видимо нужно экранировать сами слеши в заменяющей строке.

ua="Mozilla/5.0 (compatible; Konqueror/3.5; NetBSD 3.0; X11) KHTML/3.5.2 (like Gecko)"

sed -r "s/^ua=.*$/ua=$ua/" -i $filename

Содержимое файла, в котором нужно производить замену:
$ cat ~/.config/amr/oneq/settings.conf
[General]
outer_traf=1
qid=184597940
rewrite_png_ava=1
ua=здесь_будет_строка_юзер_агента
write_new_ava=1
write_png_ava=0

Самой переменной $ua (UserAgent) динамически присваивается строка агента, их много, т.е. вручную экранировать нельзя.
Kubuntu 18.04 amd64, Qt: 5.9.5, KDE Frameworks: 5.44.0, plasmashell 5.12.7, корпус чёрный, клава белая

Оффлайн Cxms

  • Активист
  • *
  • Сообщений: 407
    • Просмотр профиля
Re: Замена строки со слешами через sed в файле?
« Ответ #1 : 25 Ноября 2015, 22:11:24 »
UA='ua=Mozilla/5.0 (compatible; Konqueror/3.5; NetBSD 3.0; X11) KHTML/3.5.2 (like Gecko)'
sed -i "/^ua/ c\\$UA" settings.conf

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: Замена строки со слешами через sed в файле?
« Ответ #2 : 25 Ноября 2015, 22:26:33 »
Electricity, писать в одинарных кавычках экранировав слеш.
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн accipiter

  • Новичок
  • *
  • Сообщений: 39
    • Просмотр профиля
Re: Замена строки со слешами через sed в файле?
« Ответ #3 : 26 Ноября 2015, 17:22:18 »
А в чем сложность? В том, что sed слеши воспринимает, как разделители в команде замены?
Так смените разделитель:
sed -r "s|^ua=.*\$|ua=$ua|" -i $filename

 

Страница сгенерирована за 0.048 секунд. Запросов: 25.