我需要从一个巨大的文件中提取两个匹配模式之间的特定行。
假设pattern1(文件中唯一)匹配特定内容line # n,pattern2 (文件中不唯一)匹配之后的line # m下一个立即匹配项line # n。然后我要提取之间的所有行,包括line #n to #m
pattern1
line # n
pattern2
line # m
line #n to #m
样本文件内容
*************************************************************************** text line # n-2 text line # n-1 ********************************* Results ********************************* SUCCEEDED ... ... some text *************************************************************************** text line # m+1 text line # m+2 ***************************************************************************
期望的输出
********************************* Results ********************************* SUCCEEDED ... ... some text ***************************************************************************
如果您能帮助我解决这个问题,将不胜感激
这可以是一种方法:
$ awk '/pattern1/ {p=1}; p; /pattern2/ {p=0}' file ********************************* Results ********************************* SUCCEEDED ... ... some text ***************************************************************************
p==1
p
print $0
如果要精确匹配行:
$ awk '$0=="pattern1" {p=1}; p; $0=="pattern2" {p=0}' file
$ cat a *************************************************************************** text line # n-2 pattern1 ********************************* Results ********************************* SUCCEEDED ... ... some text *************************************************************************** pattern2 text line # m+2 pattern2 *************************************************************************** $ awk '/pattern1/ {p=1}; p; /pattern2/ {p=0}' a pattern1 ********************************* Results ********************************* SUCCEEDED ... ... some text *************************************************************************** pattern2