The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Shell скрипты)
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

sed теряет кавычки и не хочет  работать, Аноним (0), 30-Дек-20, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


29. "sed теряет кавычки и не хочет  работать"  +/
Сообщение от Аноним (29), 03-Янв-21, 18:34 
Не уверен что правильно понял задачу, но возможно это как-то поможет:

$ echo -e 'value1="111" value2="222.ext" value3="333" otherdata\nvalue1="1" value2="2" value3="3" otherdata' | sed -e 's/"/\\"/g;s/\(.*\)\\"\(.*\)\(\.ext\)\\"\(.*\)/echo \1\\"\2\3\\"\4/e;s/\\"/\"/g'

value1="111" value2="222.ext" value3="333" otherdata
value1="1" value2="2" value3="3" otherdata
Ответить | Правка | Наверх | Cообщить модератору

30. "sed теряет кавычки и не хочет  работать"  +/
Сообщение от Аноним (0), 03-Янв-21, 18:51 
Как вариант. Ещё использую со страницами, там кавычки вообще заменены на " и можно так с ними и работать или же перегонять в другие кавычки. Вопрос "проглатывания" принципиально не решаемый? Неужели они не подумали о том, что ссылки как-то нужно защищать от подобного?
Ответить | Правка | Наверх | Cообщить модератору

31. "sed теряет кавычки и не хочет  работать"  +/
Сообщение от Аноним (0), 03-Янв-21, 18:52 
Заменены на & quot; //fix
Ответить | Правка | Наверх | Cообщить модератору

32. "sed теряет кавычки и не хочет  работать"  +/
Сообщение от Аноним (29), 03-Янв-21, 20:27 
Двойные кавычки съедает echo, а не sed. Чтобы он этого не делал, нужно передать ему строку, заключённую в одинарные кавычки. Но поскольку всё это уже находится в одинарных кавычках, то, чтобы шелл правильно всё распарсил, нужна такая последовательность (один из вариантов): '"'"'

Т.е. первый апостроф заканчивает строку; затем идёт строка в двойных кавычках, которая и передаёт нужный нам апостроф; и последний апостроф снова начинает (продолжает) строку в одинарных кавычках.

$ echo -e 'value1="111" value2="222.ext" value3="333" otherdata\nvalue1="1" value2="2" value3="3" otherdata' | sed -e 's/\(.*\)"\(.*\)\(\.ext\)"\(.*\)/echo '"'"'\1\"\2\3\"\4'"'"'/e'

value1="111" value2="222.ext" value3="333" otherdata
value1="1" value2="2" value3="3" otherdata
Ответить | Правка | К родителю #30 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру