查找包含匹配和提取字段的段落

时间:2014-07-15 10:17:30

标签: linux awk sed

我有一个xml文件,如果单词" bad"我需要获得第1行的第5个单词。在开始和结束字符之间可用。如何在** Linux中使用awksed来完成此操作。

start check the label 12
d44 bad
d534 good
d443 bad
d432 bad
end

start check the label 15
d534 good
d532 good
end

start check the label 17
d52 bad
d422 good
end

需要做

if (between start and end "bad" available) then print 5th character

预期产出

12
17

3 个答案:

答案 0 :(得分:3)

只需GNU awk

$ awk '/bad/{print $5}' RS='end' file
12
17

答案 1 :(得分:0)

通过awk,

$ awk -v RS="" '/start.*bad.*end/{print $5}' file
12
17

答案 2 :(得分:0)

您也可以使用sed命令

sed -r ':loop;N;/(\n$|end$)/{s/([^0-9]+) ([0-9]+) .*bad.*/\2/gp;d;b};s/\n/ /g;t loop' file