Мне нужно извлечь следующие данные из файла XML в Bash Mac: - PullRequest
0 голосов
/ 24 февраля 2019

Мне нужно получить значение числа и имени файла из следующего:

 <title><num>4.</num></title>

                    <header>Kurztitel für Kolumnentitel</header>

                    <bibl>Bibliographische Angaben zu den folgenden Schriftstücken</bibl>

                    <xmlfile name="1790-Verhandeling"/>

В результате у меня должно получиться что-то подобное с использованием терминала Mac Bash:

1790-Verhandeling, 4

(1790-Verhandeling происходит от "xmlfilename =" и 4 от "num")

Я думал об использовании чего-то вроде этого:

grep '<num>' myfile.xml | sed "s@.*<num>\(.*\)</num>.*@\1@"

Но я не знаю, как получить остальную информацию, которая мне нужна

Заранее спасибо за помощь!

1 Ответ

0 голосов
/ 24 февраля 2019

Простое решение:

grep -oP '<num>\K(\d+)|<xmlfile name="\K(.*?)(?=")' < myfile.xml | tac | paste -d',' - -

Grep: -o только совпадение -P включить регулярные выражения Perl \ K начать совпадение с него (? = ...) после захваченного совпадения должно следовать то, что находится внутрискобки, но эта часть не фиксируется

Tac в обратном порядке совпадающих строк

Вставить (вставить несколько строк в одну строку): -d - разделитель, в нашем случае мы выбрализапятая - - сделать одну строку из двух строк на время

...