LINUX.ORG.RU

Отрубить файлу хвост и голову


0

1

Есть периодически обновляющийся хтмл-файл с постоянной структурой. Там есть строки

<td colspan=«9» class=«text»><div style=«min-height:333px; height:expression('333px');»>

и

<td><br></td>

Строки эти встречаются в файле строго по одному разу, но номера этих строк «плавают». Нужный мне текст находится между этими строками. Подскажите, пожалуйста, как средствами bash вытащить из файла искомый фрагмент. Если можно, поподробнее, мои знания в скриптАх пока оставляют желать лучшего.

Спасибо за внимание.

★★★★★

Прозреваю ссылку про «не парсить HTML регэкспами».

strangeman ★★★★
()

grep --line-number
head
tail

anonymous
()

А вообще, если резать по содержимому, то вот:

~$ cat test
line1
line2
line3
line4
line5
line6
line7
line8
line9
line10
line11
line12
line13
line14
line15
line16
line17
line18
line19
line20
~$ cat test | sed -n '/line5/,/line9/p' | sed '1d;$d'  
line6
line7
line8

Наверное можно и одним sed'ом обойтись, но я не сообразил, как. Ну и в твоем случае не забудь экранировать спецсимволы.

strangeman ★★★★
()
Ответ на: комментарий от strangeman

Но вообще, лучше воспользоваться чем-то более приспособленным для работы с html.

strangeman ★★★★
()
Ответ на: комментарий от strangeman

sed -n '/line5/,/line9/p' | sed '1d;$d'

Nifty trick

anonymous
()

инкрементирую отсылку к хотя бы SAX-парсеру

EugeneBas ★★
()
Ответ на: комментарий от strangeman

Не, это включает в выдачу эти строки. Т.е. надо будет еще первую и последнюю строки обрезать.

Ну можно и обрезать. Самый простой способ — head и tail.

cat хтмл-файл | awk '/начало/,/конец/' | head -n-1 | tail -n+2
anonymous
()
Ответ на: fix от qnikst

Неа, надо наоборот, оставить кусок между регулярками, а не вырезать.

А:

 sed -e '/foo/,/bar/ !{1,$ d}' testf
оставляет foo и bar, а их убрать надо. У меня так и не получилось одним выражением реализовать.

strangeman ★★★★
()
Последнее исправление: strangeman (всего исправлений: 2)
Ответ на: комментарий от strangeman

Спасибо! Что-то в этом роде и применил.

piyavking ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.