我需要解析文件,但是我不知道解析代码。
文件示例:
proces.review_SCAN2.status ONLINE ONLINE tsdumca12 proces.review_SCAN3.status ONLINE ONLINE tsdumca12 proces.kick ONLINE ONLINE tsdumca11 ONLINE ONLINE tsdumca12 OFFLINE OFFLINE proces.test01_ica01.test.opp ONLINE ONLINE tsdumca11
我需要的结果:
grep proces.kick
ONLINE ONLINE tsdumca11 ONLINE ONLINE tsdumca12 OFFLINE OFFLINE
或
grep proces.review_SCAN2.status
ONLINE ONLINE tsdumca12
我需要从名称“ proces.review_SCAN2.status”中查找到最后一行。我尝试使用正则表达式,但我不明白。你能帮我吗?
答案 0 :(得分:0)
grep
无法跨线存储状态,因此对于此工作而言,这是一个糟糕的选择。请考虑使用awk
:
findSection() {
awk -v tgt_section="$1" '
/^[[:alpha:]]/ { curr_section=$1 }
/^[[:space:]]/ && curr_section == tgt_section { print $0 }
'
}
findSection proces.kick <inFile
^[[:alpha:]]
是一个以字母字符开头的正则表达式匹配行;当脚本看到一个脚本时,它将变量curr_section
设置为具有该值。
^[[:space:]]
是一个以空格开头的正则表达式匹配行;当脚本看到一个脚本时,如果curr_section
和tgt_section
变量具有相同的值,则将其打印出来。