次のデータを含むファイルがあります。
私にとって必要なのは、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