从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

相关内容