解析文件中的多个值

时间:2010-07-29 13:43:52

标签: parsing shell sed awk

我有一个文件只需一行(一条巨大的行)来解析。我想解析这一行中“Undefined error code”和“id”之间出现的值。事情就是在同一条线上多次出现,各处都有不同的值。以下代码仅给出了最后一个实例。

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

我怎样才能获得所有这些实例?

2 个答案:

答案 0 :(得分:1)

$ 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

答案 1 :(得分:1)

你走在正确的轨道上:

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$//'