Используйте sed, чтобы взять строку
Я использую curl, чтобы получить html с сайта, тогда мне просто нужна конкретная строка, которая находится между "standard.xml? Revision=" и "&". Я использую sed, чтобы сделать это, но я не могу понять правильное выражение и нуждался в некоторой помощи.
curl website.com | sed -r 's|.*standards\.xml\?revision=([0-9]+).*|\1|'
Вывод, который я получаю, является полным HTML - любая помощь будет оценена.
3 ответа
Ты почти там. Попробуйте использовать -n
вариант с sed
не печатать несопоставимые данные и добавлять p
модификатор к s|||
напечатать замену строки
curl website.com | sed -n -r 's|.*standards\.xml\?revision=([0-9]+).*|\1|p'
Ты можешь использовать grep -oP
(Опция PCRE):
grep -oP 'standards\.xml\?revision=\K[0-9]+'
\K
сбрасывает сопоставленный текст, следовательно, только позже [0-9]+
возвращается
curl website.com | sed -n '/xml/ {s|.*standards\.xml\?revision=([^&]+).*|\1|p;q;}'
Из предыдущего sed [0-9]+ только если число встречается, может быть, [^&]+ более уместно. Очень хорошо использовать 'и | чтобы избежать проблем с \, поэтому я выбираю это:-)