sedで検索した複数の文字列だけを印刷できますか?

sedで検索した複数の文字列だけを印刷できますか?

正規表現で複数行のログを抽出しようとしています。

ところでログファイルが大きすぎて大変ですね。 (約10GB)..

いろいろな方法を試してみましたが、目的の結果が得られませんでした。

最初の試み)

1)「崇高なアプリ」で正規表現を使用します。 =>問題:メモリ不足が表示されます。

2)「スーパー編集アプリ」で正規表現を使用してください。 =>問題:メモリ不足が表示されます。

2回目の試み)osxの端末で「sed」プログラムを使用します。

使用される操作)

$sed -E -n '/.*output:[\S\s]*?AAA[\S\s]*?END.*/p' ./AppLog.txt

AAAがキーワードを検索しています。 (ユーザーID)

「REエラー:無効な冗長演算子オペランド」と表示されます。

AppLog.txtの内容です。

:
:
DEBUG|2018-03-27,14:41:43.089|print log
DEBUG|2018-03-27,14:41:43.089|print log
DEBUG|2018-03-27,14:41:43.089|output:
=============================================
[START]
00 USER_ID                   = {"AAA"}  <= searching key
01 USER_NAME                 = {"N"}
02 USER_TEL                  = {"001-1234-1234"}
: 
05 USER_LOCATION             = {"earth"}
[END]
=============================================
DEBUG|2018-03-27,14:41:43.089|print log
DEBUG|2018-03-27,14:41:43.089|print log
DEBUG|2018-03-27,14:41:43.089|output:
=============================================
[START]
00 USER_ID                   = {"BBB"}  <= searching key
01 USER_NAME                 = {"N"}
:
03 USER_LOCATION             = {"saturn"}
[END]
=============================================
DEBUG|2018-03-27,14:41:43.089|print log
DEBUG|2018-03-27,14:41:43.089|print log
DEBUG|2018-03-27,14:41:43.089|output:
=============================================
[START]
00 USER_ID                   = {"AAA"}  <= searching key
01 USER_NAME                 = {"N"}
02 USER_ADDR                 = {"bla~ bla~~"}
:
010 JOB                       = {"designer"}
[END]
=============================================
:
:

必要な結果は次のとおりです。

DEBUG|2018-03-27,14:41:43.089|output:
=============================================
[START]
00 USER_ID                   = {"AAA"}  <= searching key
01 USER_NAME                 = {"N"}
02 USER_TEL                  = {"001-1234-1234"}
: 
05 USER_LOCATION             = {"earth"}
[END]
=============================================
DEBUG|2018-03-27,14:41:43.089|output:
=============================================
[START]
00 USER_ID                   = {"AAA"}  <= searching key
01 USER_NAME                 = {"N"}
02 USER_ADDR                 = {"bla~ bla~~"}
:
010 JOB                       = {"designer"}
[END]
=============================================

ベストアンサー1

pcregrep働く:

pcregrep -M \
   'DEBUG.*output:\n===*\n.*?\n.*?USER_ID.*?"AAA".*?(\n*?.*?\n*)*?===*' AppLog.txt 

おすすめ記事