私はLinuxで複数行の検索を実行するのにgrepを使用しようとしていますが、問題はあります。 基本的には、次の行をすべて抽出したい 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"
。 この問題を回避する方法はありますか?
回答:
回答№1は1Sequencesという単語を見つけて、その行に加えて前の行を印刷したいと言っていますか?
それはちょうど:
awk "/Sequences/{print prev ORS $0} {prev=$0}" file
回答№2の場合は1
あなたはおそらく探している
grep -oPz "(?ms)Query=(?:(?!Query).)*?Sequences.*?$"
これはPCRE MULTILINEとDOTALLフラグを (?ms)
各セグメントを Query
次の行へ Sequences
ライン。
さらに、 -z
渡されたフラグ グレープ NULを行区切り文字として扱うようにします。ファイルの内容を単一の文字列として表示します。