Если вы уверены, что все ваши файлы имеют именно такой формат, вы можете использовать простое sed
выражение
sed -E -e 's/^<span class="store-time">OPEN SINCE <em>([A-Z][a-z]+ *[0-9]+, *[0-9]+)<\/em><\/span>/\1/'
Он просто находит начало вашей строки, за которым следует что-то, похожее на дату (буквы, после которых пробел и число, затем запятая и снова число) и конец вашей строки.
cat
все ваши файлы и отправьте результат на sed
ввод, и вы получите список дат.
Но, как указано в комментариях, синтаксический анализ XML-файлов может быть проблематичным (см., Например, RegEx соответствует открытым тегам, за исключением автономных тегов XHTML ). Если теги xml разбиты на несколько строк, сценарий не сможет извлечь информацию, например, со следующими данными
<span class="store-time">
OPEN SINCE <em>Aug 9, 2012</em>
</span>
Чтобы справляться с такими ситуациями, существуют более мощные инструменты. В качестве набора инструментов xmlstarlet
или perl
класса, как XML::libXML
. Они могут выполнять более безопасный анализ, но они более сложны в использовании.
Если вы точно уверены, что все ваши файлы имеют правильное форматирование, сценарий sed может решить вашу проблему.