两个模式之间的搜索线没有给出期望的结果

时间:2016-11-11 02:54:54

标签: awk

我需要帮助。在我的转储文件中有各种作业,我需要从转储中获取各种作业的2个模式之间的行。

下面是转储

中的一些行
SCHEDULE A01G2A#J01GME2A01 
ON RUNCYCLE RULE2 "FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA"
 ON RUNCYCLE CALENDAR1 LAST_DAY
 AT 2330 UNTIL 2345 +1 DAYS 
:
A01A#J01G_R01
OPENS A01GFCDB2A#"/tmp/idreme2a01_create_ob_ac.tkn"
END

在转储中就像这样有很多工作。

我想从这种模式中选择 SCHEDULE A02A#J01GME2A01 结束

我使用了以下代码

awk '/SCHEDULE A02A#J01GME2A01/ {flag=1;next} /END/ {flag=0}flag' A01GFCDB@sche2804.txt

但它也在单词CALENDAR中搜索END并给我行o / p但是在我的要求中我需要第一行之间的行直到行开始用OPENS开头或者可能是一些anotehr单词。

我可以帮助我吗

1 个答案:

答案 0 :(得分:0)

您的粗体文字与您的awk命令不匹配。我假设SCHEDULE之后每个作业都有不同的字母数字值。

两种模式之间的打印已经内置了功能(适用于awksed):

awk '/^SCHEDULE/,/^END$/ {print}' file

以下是一个示例运行:

$ cat file 
SCHEDULE A01G2A#J01GME2A01 
ON RUNCYCLE RULE2 "FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA"
 ON RUNCYCLE CALENDAR1 LAST_DAY
 AT 2330 UNTIL 2345 +1 DAYS 
:
A01A#J01G_R01
OPENS A01GFCDB2A#"/tmp/idreme2a01_create_ob_ac.tkn"
END
$ awk '/^SCHEDULE/,/^END$/ {print}' file 
SCHEDULE A01G2A#J01GME2A01 
ON RUNCYCLE RULE2 "FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA"
 ON RUNCYCLE CALENDAR1 LAST_DAY
 AT 2330 UNTIL 2345 +1 DAYS 
:
A01A#J01G_R01
OPENS A01GFCDB2A#"/tmp/idreme2a01_create_ob_ac.tkn"
END