我有一个xml文件,如果单词" bad"我需要获得第1行的第5个单词。在开始和结束字符之间可用。如何在** Linux中使用awk
或sed
来完成此操作。
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
答案 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