2010-12-15 90 views
1

我的文件是这样的:如何使用awk打印出最后的模式范围?

/开始模式/
第一场比赛
/结束模式/

其他文本

/开始模式/
秒比赛
/结束图案/

其他文字

/开始模式/
这是一个我 想打印出来
/结束 模式/
其他文本

我怎样才能打印出来用awk的最后一场比赛?我只知道如何打印出所有这些比赛。

回答

1
awk 'END { print r } 
/end pattern/ { f = x } 
/begin pattern/ { f = 1; r = x } 
f++ > 1 { r = r ? r RS $0 : $0 } 
' infile 
1

存储当前的匹配,并使用END块将其打印出来:

awk '/end pattern/{flag=0} flag{m=$0} /begin pattern/{flag =1} END{print m}' file 

这工作如果只有一个线之间/开始模式/和/结束模式/。