GNU grep 改行を含めた複数行で一致する方法

こんにちは、minoruです。

Ubuntu(Xubuntu)に入っているgrep(GNU grep ver3.4)で、複数行の改行を含めた一致を見つけ出す方法を書き残しておきます。

OS:Xubuntu20.04
bash環境

テキストファイル

AAABBBCCC
DDDEEEFFF
GGGHHHIII

コマンド

grep -zPo '(?<=\b).*?BBB(.|\n)*?DDD.*\n' hoge.txt | tr -d '\0'

ネット上では-Pでいけるみたいな記述が多く見られましたが、ダメでした。
NG例

grep -P 'BBB[\s\S]*DDD' hoge.txt

参考:https://teratail.com/questions/5as07snjkqdfxn

LinuxやUbuntuをこれから試してみたい!と言う人や、今までWindowsで使っていたPCをWindowsは残したままLinuxやUbuntuを活用してみたい人は以下の本がおすすめ!
https://amzn.to/3Vl1oNx

LinuxやUbuntuを使おうとして、初心者の人が最初に「?」となりやすいのがコマンドでしょう。使い方がわかればこれほど簡単で便利なものはありませんが、最初は戸惑うのが普通です。そんな初心者に向けてマンガで超わかりやすいコマンドについて学べるのはシス管系女子みんとちゃんの本!
https://amzn.to/3FMTx5v

シェアする

  • このエントリーをはてなブックマークに追加

フォローする