IPマルチメディアデータから特定の文字列を抽出する

IPマルチメディアデータから特定の文字列を抽出する

次のデータを含むファイルがあります。

私にとって必要なのは、IMPU利用可能なデータブロックの組み合わせです。IMPIこのデータは現在約25個の巨大なファイルに存在し、すべてのファイルでフィルタリングする必要があります。

特定のブロックにのみ存在することもできますIMPU

次の形式のデータが必要です。

IMPU : XXXXXXXXXXXXX , IMPI : YYYYYYYYYYYYY , mscId : nakjsxabjk1nbjk23e32jked
dn: IMPU=tel:\csasacas,serv=IMS,assocId=csacsa,ou=associations,dc=cl
structuralObjectClass: csacascsa
objectClass: cascascsa
entryDS: cascasc
nodeId: ascasc
createTimestamp: csaccascas
modifyTimestamp: casc
IMPU: tel:+XXXXXXXXXXXXXXXXXXXXX
ImsIrs: cascasc
ImsSessBarrInd: cascas
ImsIsDefault: csac
ImsMaxNumberOfContacts: 1
mscID : nakjsxabjk1nbjk23e32jked

dn: serv=Identities,mscId=csac,ou=multiSCs,dc=cl
structuralObjectClass: casc
objectClass: csac
objectClass: sacas
entryDS: csaas
nodeId: csac
createTimestamp: sacsa
modifyTimestamp: ascsac
serv: cascas
CDC: csacsa
IMSI: scsacdascs
imsiMask: cacssacas
MSISDN: cdsacsacd
msisdnMask: csaascdas
IMPI: [email protected]
impiMask: aaaaaaaaaaaaaa

ベストアンサー1

入力にラベルと値のペアがある場合は、まずラベル(名前)を値にマップする配列を作成し、次にラベルが好きな順番で必要な値を印刷することをお勧めします。

$ awk -F'[: +]+' -v OFS=' , ' '
    { sub(/@.*/,""); f[$1] = $1 " : " $NF }
    END { print f["IMPU"], f["IMPI"], f["mscID"] }
' file
IMPU : XXXXXXXXXXXXXXXXXXXXX , IMPI : YYYYYYYYYYYYYYYYY , mscID : nakjsxabjk1nbjk23e32jked

おすすめ記事