Как использовать sed, чтобы найти и окружить все слова после знака равенства кавычками - PullRequest
1 голос
/ 25 марта 2012

Например,

Ввод

<url wiki=https://wiki.archlinux.org/index.php/Main_Page forums=https://bbs.archlinux.org/>

Требуемый вывод

<url wiki="https://wiki.archlinux.org/index.php/Main_Page" forums="https://bbs.archlinux.org/">

Вот пример команды, с которой вместо = стоит "=".В моем простом уме был бы какой-то способ заставить его искать следующее слово после равенства и заключать это в себе.Я не уверен, существует ли это, но любая помощь приветствуется.

echo "<url wiki=https://wiki.archlinux.org/index.php/Main_Page forums=https://bbs.archlinux.org/>" | sed 's/=/"&"/'

Ответы [ 2 ]

2 голосов
/ 25 марта 2012

Предлагаемое вами регулярное выражение (sed 's/=/"&"/') заменит = на "=", а это не то, что вам нужно. Похоже, это работает правильно на ваших данных образца:

sed -e 's/=\([^" >][^ >]*\)/="\1"/g'

Заменить знак равенства, за которым следует непустое, не кавычка, не больше чем и строка других непустых, не больше чем символы со знаком равенства, двойной кавычкой, запомненной строкой и еще одна двойная кавычка, глобально в каждой строке.

0 голосов
/ 25 марта 2012
sed 's/\(=\)\([^ >]*\)/\1"\2"/g'

Захват последовательности непустой строки после знака = и заключение в кавычки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...