Поиск и печатает только подобранный шаблон

У меня есть некоторые огромные xml текстовые файлы. Я должен записать сценарий, чтобы найти и распечатать определенный тег только. Я попробовал sed и grep но они оба возвращают целую строку.

Используя SunOS 5.x, таким образом, не все команды Linux могут работать. grep -o не доступно.

'xml' файл не является на самом деле одним огромным xml документом, но каждая строка является отдельным xml документом, со всего несколькими тегами, даже не вложенными. И структура довольно легка, таким образом, полные xml синтаксические анализаторы не нужны, и вероятно не работали бы.

Я искал sed, awk, или некоторый другой, лайнеры, но не мог заставить их работать, и они оба относительно плохо мне знакомы.

3
задан 10.02.2011, 07:49

4 ответа

Необходимо использовать инструмент, которым это сделано для парсинга XML-файлов, однако вот пример того, как Вы могли бы выполнить в этом sed:

Учитывая простую строку как <foo>bar</foo><baz>qux</baz> и Вы хотите значение "панель", можно сделать это:

sed -e 's|.*<foo>\([^<]*\)</foo>.*|\1|' inputfile
2
ответ дан 07.12.2019, 23:27

Используйте 'xml sel' команда xmlstarlet: http://xmlstar.sourceforge.net/

Пример:

xml sel -t -c '/xpath/to/my/tag' xmlfile.xml

Остерегайтесь пространства имен по умолчанию в своем XML-файле хотя (читает это). Пример:

xml sel -N x="http://www.mozilla.org/2006/browser/search/" -t -m '//x:Param' -c "." -n /usr/lib/firefox-3.5/searchplugins/google.xml

Я использую xmlstarlet для всех xml задач теперь, главным образом запросы.

2
ответ дан 07.12.2019, 23:27
$ echo '<a><b>B</b><c>C</c></a>' > file.xml
$ perl -ne 'm!<b>(.*)</b>! && print "$1\n"' *.xml
B

$ perl -ne 'BEGIN{$/="<"}; print "$1\n" if m![bc]>([^<]+)<!' *.xml
B
C

Но действительно необходимо использовать синтаксический анализатор XML по причинам, которые должны быть (или станет), слишком очевидный.

2
ответ дан 07.12.2019, 23:27

Две идеи:

  1. установите grep из sunfreeware.com. Это должно получить Вас-o опция, которую Вы знаете из Linux.

  2. запишите жемчуг или сценарий Python, чтобы сделать задание.

1
ответ дан 07.12.2019, 23:27

Теги

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