Как я могу искать от строки1 до строки2 в Linux? - PullRequest
0 голосов
/ 16 декабря 2011

Я пишу bash-скрипт, который загружает страницу, затем ищет ссылки в формате jpg и загружает их.Я застрял с командами grep / sed, не могу заставить их найти ссылки.До сих пор я пробовал:

grep -e "http.*" -e ".*jpg" -n wget.html

и

sed -n '/http/,/jpg/p' wget.html

Как я могу искать из http: // в jpg в Linux?А может, есть другой способ, кроме sed, grep?

1 Ответ

1 голос
/ 16 декабря 2011

Насколько я понимаю, вы хотите извлечь все http: //...jpg строки из некоторого загруженного HTML. Я думаю, в идеале по одному на строку.

$ cat wget.html | grep -e 'http:.*jpg' |sed -e 's/^.*\(http:.*jpg\).*$/\1/g'

grep выбирает только те строки, которые содержат ссылки на http, а sed удаляет все остальные ненужные строки из этих строк.

Это ограничено одним http ref на строку HTML. Если это невозможно предположить, вы можете добавить что-то вроде "tr"> '' \ 010 'в начале конвейера, чтобы разбить строки с несколькими тегами.

Пример:

sal-xps:~  $ cat wget.html
<body>
 <img src="http://foo.jpg">
 <img src="http://bar/gronk.jpg">
</body>


sal-xps:~  $ cat wget.html | grep -e 'http:.*jpg' |sed -e 's/^.*\(http:.*jpg\).*$/\1/g'
http://foo.jpg
http://bar/gronk.jpg
...