парсинг нескольких значений из файла - PullRequest
1 голос
/ 29 июля 2010

У меня есть файл, который занимает только одну строку (одну огромную строку) для анализа.Я хочу разобрать значение, которое появляется между «Неопределенный код ошибки» и «id» в этой строке.Дело в том, что это появляется несколько раз на одной строке с разными значениями везде.Следующий код дает мне только последний экземпляр.

cat bad_events_P2J3.xml | sed -n 's/.*Undefined error code (\(.*\))\" id.*/\1\n/p'

Как я могу получить все экземпляры этого?

Ответы [ 2 ]

1 голос
/ 29 июля 2010

Вы были на правильном пути:

sed -n 's/.*Undefined error code\(.*\)id.*/\1/p' bad_events_P2J3.xml

Обратите внимание, что cat не требуется и, если вам не нужен дополнительный перевод строки, sed предоставит вам его.

Я упустил тот факт, что это появляется несколько раз в вашем файле. Это должно работать в этом случае:

grep -Po 'Undefined error code.*?id' bad_events_P2J3.xml | sed 's/^Undefined error code//;s/id$//'
1 голос
/ 29 июля 2010
$ cat file
text1 text2 Undefined error code text3 text4 id text5 text6 Undefined error code txt7 txt8 id
$ awk -vRS="id" '{gsub(/.*Undefined error code/,"")}1' file
 text3 text4
 txt7 txt8
...