我需要帮助。在我的转储文件中有各种作业,我需要从转储中获取各种作业的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单词。
我可以帮助我吗
答案 0 :(得分:0)
您的粗体文字与您的awk
命令不匹配。我假设SCHEDULE
之后每个作业都有不同的字母数字值。
两种模式之间的打印已经内置了功能(适用于awk
和sed
):
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