awk搜索多行记录文件的多个字段

ada*_*ive 5 bash shell awk

我有一个文件包含以下形式的记录:

SMS-MT-FSM-DEL-REP
country: IN
1280363645.979354_PFS_1_1887728354

SMS-MT-FSM-DEL-REP
country: IN
1280363645.729309_PFS_1_1084296392

SMS-MO-FSM
country: IR
1280105721.484103_PFM_1_1187616097

SMS-MO-FSM
country: MO
1280105721.461090_PFM_1_882824215
Run Code Online (Sandbox Code Playgroud)

这有助于通过awk解析使用类似于:awk'BEGIN {FS ="\n"; RS =""}/country:.*MO/{print $ 0}'

我的问题是如何使用awk搜索2个不同字段的记录?例如,我只想打印出具有MO国家和第一行记录的记录是SMS-MO-FSM?

gho*_*g74 4

如果您设置了 FS="\n" 和 RS="",则第一个字段 $1 将是 SMS-MO-FSM。因此你的 awk 代码是

awk 'BEGIN{FS="\n"; RS=""} $2~/country.*MO/ && $1~/SMS-MO-FSM/ ' file
Run Code Online (Sandbox Code Playgroud)