Существует некоторый текст, который мне нужен с веб-страницы, страница, длина которой несколько меняется со дня на день. Я ищу, чтобы загрузить этот текст периодически. Я не хочу/нуждаюсь в нескольких десятках строк как с начала, так и с конца примерно на 250 строк. Общее количество строк на странице будет непредсказуемым, поэтому мне нужно будет установить начальные/конечные точки для удаления, которое я хочу выполнить, на основе битов текста, которые не меняются изо дня в день. Я определил целевые текстовые шаблоны, поэтому я ищу для анализа содержимого на основе тех, что нежелательные строки удаляются в результирующем документе. Я хочу использовать утилиты командной строки для этого, так как я хотел бы автоматизировать процесс и сделать из него работу cron.Решение командной строки для удаления строк до/после соответствия шаблону
Метод загрузки выбора заключается в использовании lynx -dump www.specified.url my-download.txt
Эта часть работает отлично. Но обработка дампа, чтобы отрезать ненужные начальные и конечные строки, пока не работает. Я нашел патч в пример, который, по-видимому, должен делать то, что мне нужно:
sed -n '/Phrase toward the beginning/,/Phrase toward the end/p' file_to_parse.txt >parsed_file.txt
Он работает частично, то есть он отрезает начало файла по адресу правой точки (все строки, предшествующие «Фраза к началу»). Но я не могу заставить его вырезать линии с конца, т. Е. Строки, следующие за фразой «Фраза к концу». Все мои попытки с использованием этой формулы до сих пор не касались конца файла. Вероятно, я должен упомянуть, что большинство строк в выгруженном файле lynx производит по какой-либо причине три пробела - включая строку «Фраза в конец», которую я пытаюсь указать в качестве точки, после которой дальнейшие строки должны быть удалена.
Я предполагаю, что может быть более одной утилиты, которая может выполнять вид разбора, который я после - sed и awk - вероятные кандидаты, о которых я могу думать. Я склоняюсь к sed, потому что его работы для меня немного менее таинственны, чем awk. Но, честно говоря, у меня действительно есть только самые неопределенные представления о том, как использовать sed. Когда дело доходит до использования и/или понимания awk, я теряюсь очень, очень быстро. Возможно, есть и другие утилиты, которые могут на основе текстовых шаблонов отрывать части начала и окончания текстового файла?
Будет оценен вход, как я могу использовать sed, awk или любую другую аналогичную утилиту - для достижения моей цели. Это должно быть сделано на машине Ubuntu, кстати.
LATER EDIT: извините за отсутствие публикации и примера. Загруженный страница будет выглядеть как следующий
Нежелательные линии 1
Нежелательные линия 2
Нежелательные линия 3
Нежелательные линии и т.д.
фраза к началу
Wanted линия 1
Wanted линия 2
Требуется линия 3
Требуется линия ca 4-198
Фраза по направлению к концу
Нежелательная линия 200
Нежелательная линия 201
Нежелательная линия 202
Нежелательная линия. , ,(Конец файла)
Окончательный результат должен выглядеть, с другой стороны, как
фразы по отношению к началу
Wanted линия 1
Wanted линия 2
Wanted линия 3
Wanted линии ч 4-198
фразы к концу
Надеюсь, теперь все станет понятнее. Пожалуйста, имейте в виду, хотя я использовал номера строк, чтобы лучше иллюстрировать то, что я намереваюсь сделать, что я не смогу выполнить требуемые удаления на основе номеров строк из-за непредсказуемых способов, m будет меняться.
, пожалуйста, разместите небольшой тестовый ввод с ожидаемым результатом. История форма хороша, но данные лучше. – karakfa
вместо написания эссе, это поможет, если вы просто приведете примеры, см. Http://stackoverflow.com/help/mcve – Sundeep
Ваша команда работает для меня с вашим примером ввода. Ваш реальный вход должен содержать что-то, что не отражено в примере. Может быть, конечная фраза, охватывающая несколько строк? –