現在、解決に役立つ必要がある問題が発生しました。正しい方向を指すことでさえも役立ちます。
行の多いファイルがありますが、特定のパターンに従う特定の行「グループ」だけを抽出したいと思います。 (1行はで始まりA
、次の行はで始まりB
、次の行はで始まる必要がありますC
)
例:モード:、、A
順B
にC
始まります。
入力する:
A1
B1
C1
D1
A2
B2
D2
A3
D3
A4
B4
C4
A5
B5
D5
出力:
A1
B1
C1
A4
B4
C4
ベストアンサー1
別の解決策awk
:
awk 'p2~/^A/ && p1~/^B/ && /^C/{print p2 RS p1 RS $0} {p2=p1; p1=$0}'
perl
入力全体を単一の文字列として読み込みます。
perl -0777 -ne 'print /^A.*\nB.*\nC.*\n/mg'
そしてリップグレップ便利なマルチラインマッチングオプションをサポートします。-U
rg -oUN '^A.*\nB.*\nC.*'
ここで-o
オプションは一致する部分だけを取得することであり、-N
オプションは出力で行番号を防ぐことです。