$ cat /tmp/zfssa_check_raw.log
====== aps_akd_service_offline.output ======
WARN: akd service state is online
====== aps_akd_service_offline.result:1 ======
使用固定模式字符串,它可以按预期工作。
$ awk '/aps_akd_service_offline.output/{flag=1;next}/aps_akd_service_offline.result/{flag=0}flag' /tmp/zfssa_check_raw.log
WARN: akd service state is online
但是当我使用a和b变量来表示灵活的模式时, 它什么都没显示。我不知道为什么,有人可以在这帮忙吗?
$ awk -v a="aps_akd_service_offline.output" -v b="aps_akd_service_offline.result" '/a/{flag=1;next}/b/{flag=0}flag' /tmp/zfssa_check_raw.log
$ a="aps_akd_service_offline.output"
$ b="aps_akd_service_offline.result"
$ awk -va="${a}" -vb="${b}" '/a/{flag=1;next}/b/{flag=0}flag' /tmp/zfssa_check_raw.log
答案 0 :(得分:0)
要与变量进行正则表达式匹配,请使用~
运算符:
awk -v a="aps_akd_service_offline.output" -v b="aps_akd_service_offline.result" \
'$0 ~ a {flag=1;next} $0 ~ b {flag=0}flag' /tmp/zfssa_check_raw.log