У меня есть HTML-страница со следующим содержанием:Как остановить алчность, используя Grep из Баша
[...]
<tr><td class="n"><a href="play-1.0.1.zip">play-1.0.1.zip</a></td></tr>
<tr><td class="n"><a href="play-1.0.2.1.zip">play-1.0.2.1.zip</a></td></tr>
<tr><td class="n"><a href="play-1.0.2.zip">play-1.0.2.zip</a></td></tr>
[...]
И я хотел бы, чтобы извлечь только
play-1.0.1.zip
play-1.0.2.1.zip
play-1.0.2.zip
, чтобы затем найти самую последнюю версию (в этом случае было бы play-1.0.2.1.zip)
Так что я попытался с
cat tmp.html | grep "<a href=\".*\""
<a href="play-1.0.1.zip">play-1.0.1.zip</a></td><td class="m"
<a href="play-1.0.2.1.zip">play-1.0.2.1.zip</a></td><td class="m"
<a href="play-1.0.2.zip">play-1.0.2.zip</a></td><td class="m"
Так что я попытался с ленивым:
cat tmp.html | grep "<a href=\".*?\""
и отрицая котировки
cat tmp.html | grep "<a href=\"[^\"]*?\""
оба они не возвращаются ничего
мне нужно получить только совпадающую часть (а не href), а затем найти последние, но я stu ск с этой проблемой жадностью ...
-
спасибо за ответы на все вопросы, все они были очень полезны, это трудно решить, какой из них правильный, в конце концов, я решил его с :
grep -v '.*-RC.*' index.html | grep -oP 'play-1.*?.zip' | sort -Vru | head -1
Grep -E " strkol
Нет необходимости использовать 'cat tmp.html' с grep, потому что grep может обрабатывать файлы самостоятельно. Вы должны использовать 'grep -E pattern tmp.html'. – piotrekkr