我正在尝试使用grep在linux中执行多行搜索但是有问题。
基本上我想在下面的例子中用Sequences
字符串提取所有后面的行。
Query= BRNW_157
Sequences producing significant alignments: (Bits) Value
Query= BRNW_428
Query= BRNW_503
Sequences producing significant alignments: (Bits) Value
Query= BRNW_601
Query= BRNW_617
Sequences producing significant alignments: (Bits) Value
我试过awk但它不起作用......
awk '/Query=*/,/Sequences*/'
然后我使用了grep,它也不起作用...... grep -PZo 'Query=*\n.*sequences'
。
有办法解决这个问题吗?
答案 0 :(得分:1)
您可能正在寻找
grep -oPz '(?ms)Query=(?:(?!Query).)*?Sequences.*?$'
通过(?ms)
传递PCRE MULTILINE和DOTALL标记,并从Query
行中挑选出每个段到下一个Sequences
行。
此外,传递给grep的-z
标志强制它将NUL视为行分隔符,使文件内容显示为单个字符串。
答案 1 :(得分:1)
您是说要找到单词序列并打印该行加上之前的行?
那只是:
awk '/Sequences/{print prev ORS $0} {prev=$0}' file