Удалить текст, который я не хочу

У меня на рабочем столе большой html-файл, который выглядит как

src="http://images.alaablubnan.com/images/Balls/20.jpg"
alt="http://images.alaablubnan.com/images/Balls/20.jpg"/></a></td><td><a
href="http://images.alaablubnan.com/images/Balls/32.jpg"
target="_blank"><img
src="http://images.alaablubnan.com/images/Balls/32.jpg"
alt="http://images.alaablubnan.com/images/Balls/32.jpg"/></a></td><td><a
href="http://images.alaablubnan.com/images/Balls/30.jpg"
target="_blank"><img
src="http://images.alaablubnan.com/images/Balls/30.jpg"
alt="http://images.alaablubnan.com/images/Balls/30.jpg"/></a></td></tr><tr><td><table><tr><td>webpage/url</td><td>http://www.playlebanon.com/webservices/website/lotto/PopUps/HistoryDetail.aspx?t=1405536730503&FromDraw=1&ToDraw=1213&Draw=0</td></tr></table></td><td>2</td><td>complete
lotto results</td><td>complete lotto results</td><td>2</td><td><a
href="http://www.playlebanon.com/webservices/website/lotto/PopUps/HistoryDetail.

. Если возможно, я хочу:

получить все файлы .jpg, удалить все html Код (это 1.jpg, 2.jpg ... до 42.jpg) Я хочу удалить .jpg extenstion. Я хочу, чтобы каждая строка чисел имела только 7 номеров, а затем вставляла новую строку
1
задан 30 July 2014 в 20:56

1 ответ

Я предполагаю, что вы пытаетесь очистить какой-то результат. В этом примере есть только три шара, и мы можем их извлечь, выполнив поиск Balls/<one-or-many-digits> и группировки (конструкцию \(..\)) вокруг числа, а затем заменив всю партию на эту группу (\1 является ссылкой на первая группа).

$ sed -n 's/.*Balls\/\([0-9]\+\).*/\1/gp' htmlfile | uniq | xargs -n7 echo
20 32 30

sed проходит эту линию за строкой. Я прошу его совместить и заменить все на линии (вот почему мы закрываем каждый конец .* - «любое количество чего-либо») с тем, что он соответствует в группе. [F8] и /p используются вместе, чтобы не печатать, если строка не была совпадением, а /g означает, что она будет продолжать совпадение до тех пор, пока она не попадет в конец файла.

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

Я передаю его через uniq, потому что там много дублирования.

И я использую [ f12] в конце сгруппировать 7 аргументов и передать их все на echo. Здесь нет 7 мячей, поэтому он показывает только 3.

Вероятно, это замедляет работу, но вы можете иметь немного более читаемое выражение, если вы используете расширенный синтаксис -r для sed:

sed -nr 's/.*Balls\/([0-9]+).*/\1/gp' htmlfile | ...

Делает то же самое, просто без некоторых запутывающих взглядов. Вероятно, когда-либо немного медленнее.

8
ответ дан 24 May 2018 в 05:17
  • 1
    не является модификатором g для создания нескольких подстановок в пространстве шаблонов текущего времени (обычно это текущая строка )? AFAIK это не означает «поддерживать совпадение до тех пор, пока [он не ударит] в конец файла» - это произойдет в любом случае, если вы явно не уйдете (q или Q). – steeldriver 25 July 2014 в 16:18

Другие вопросы по тегам:

Похожие вопросы: