マルチラインパターン/データ抽出

マルチラインパターン/データ抽出

約100,000個のファイルに次のヘッダーがあります。各行を個別に抽出し、各レコードをExcelにマージしたので、時間が足りなくなり、データを抽出する便利な方法を探しています。

X-RSMF-Generator:RSMFジェネレータのサンプルライブラリ

X-RSMFバージョン:1.0.0

X-RSMFイベント数:53

X-RSMF-開始日:2022-09-20T04:33:11-04:00

X-RSMF終了日:2022-09-20T16:47:56-04:00

X-RSMF-グループID:GRP000000118

X-RSMF補助グループID:GRP000000118_D_20220920

X-RSMFインクルードが削除されました:間違った

X-RSMF-アプリケーション:ネイティブメッセージ

X-RSMF参加者:1人称<5156242756> 2人称、2人称

サム[Eメール保護]<21243210277> 4人*** <345278652345>

MIMEバージョン:1.0

すべてのファイルにすべての行が存在するわけではなく、最後のフィールドに複数の行を含めることができます。 MIME バージョン: 1.0 - 利用できるようです。MIMEバージョン:1.0停止で。また、各項目行のデータのみが必要です。 ":" (コロン空白) 前の内容はすべてフィールドヘッダーなので無視できます。

私は各ラインとパイプをAWKに接続できると思いながらsedを使い始めました。各柱を作ります。

#!/bin/sh

shopt -s nullglob
FILES=/mnt/c/Temp/rsmf/*.rsmf

for f in $FILES

do
    #echo "Processing $f"
    sed -rn \
    -e '/^X-RSMF-BeginDate:/{
        s/X-RSMF-BeginDate: //
        s/T/ /
        s/-0[45]:00/ /
        s/X-RSMF-Application://
        h
        #p
        }' \
    -e '/^X-RSMF-EndDate:/{
        s/X-RSMF-EndDate: //
        s/T/ /
        s/-0[45]:00/ /
        H
        #p
        }' \
     -e '/^X-RSMF-GroupID:/{
        s/X-RSMF-GroupID: //
        H
        x
        s/\r\n//gp
        }' \
         $f
done

結果 -

2022-10-05 12:54:27 2022-10-05 12:54:27 GRP000000001
2022-10-05 11:48:18 2022-10-05 11:48:18 GRP000000002

この問題を議論する前に、この特定のプロジェクトのベストプラクティスとケースに関するアドバイスを求めたいと思います。

アイデア? ?

ベストアンサー1

そして:

awk -F': ' 'BEGIN{ORS=" "}$1=="MIME-Version"{exit}{print $2}END{print "\n"}' file    

おすすめ記事