我有一个文件只需一行(一条巨大的行)来解析。我想解析这一行中“Undefined error code”和“id”之间出现的值。事情就是在同一条线上多次出现,各处都有不同的值。以下代码仅给出了最后一个实例。
cat bad_events_P2J3.xml | sed -n 's/.*Undefined error code (\(.*\))\" id.*/\1\n/p'
我怎样才能获得所有这些实例?
答案 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$//'