Прежде всего, люди придут сюда (возможно, будут говорить о ком-то по имени Cthuhlu) и скажут вам, что awk / regex не являются парсерами HTML. И они правы, и вы должны подумать над тем, что они говорят. Реально, вы очень часто можете получить что-то вроде этого:
sed -n 's/^.*<a\s\+href\=\([^>]\+\)>\([^<]\+\)<\/a>.*$/\2\n\1/p' input_file.html
Это говорит sed
прочитать файл input_file.html
, найти строки, которые соответствуют регулярному выражению, заменить их разделами, которые вы указали длявывод, а все остальное отбросить. Результат будет распечатан на терминал.
Это также предполагает, что файл отформатирован так, что каждый экземпляр <a href=/news/detail/1/hyperlink>textvalue</a>
находится на отдельной строке. Регулярное выражение может быть легко изменено, чтобы приспособиться к другому форматированию, если это необходимо.
Если все ссылки, которые вы хотите, начинаются с /news/detail/1/
, это, вероятно, будет работать:
sed -n 's/^.*<a\s\+href\=\(\/news\/detail\/1\/[^>]\+\)>\([^<]\+\)<\/a>.*$/\2\n\1/p' input_file.html