如何根据unix中awk中的cloumn值将行转换为列

如何根据unix中awk中的cloumn值将行转换为列

我有如下数据

dn: uid=032096,OU=客户,OU=人员,O=B2C
对象类别:顶部
对象类别:人
对象类:organizationalPerson
对象类:用户
对象类:inetOrgPerson
对象类:b2CCustomerPerson
cn:xxxxxxxxxxxxxxxxxx
尊贵名称:uid=032096,OU=客户,OU=人员,O=B2C
实例类型:4
创建时间:20110716120512.0Z
更改时间:20160407215618.0Z
USN创建:401180
uSN更改:88288899
名称:032096
objectGUID:: B2QAeBHw1UKwFJAkKi8SFg==
密码最后设置:130528418341644345
objectSid:: AQUAABjdlU4Ng+r7Fsx63e/RO0CWfrW51Nqjtg==
对象类别:CN=人、CN=架构、CN=配置、CN={C3B2C981-53A4-46FE-A3
 08-1CA306D4D63D}
dSCorePropagationData:16010101000000.0Z
最后登录时间戳:131045397771771108
b2CSmDisabledFlag:0
b2CQALoginLockout:FALSE
b2C忘记密码24小时开始时间:20140818092312.0Z
b2C后缀代码:00
b2CPwdNotSetup:假
b2CSm密码数据:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxG0G+3K7wga6Fd 6ujkLxkBaUEeEzCc8DmyfaKJTVn+QHNCaCq19TVZLhXVAEzoJGrTwY=
b2CWorkAddrDecriminator:美国
b2CQALoginAttempt:0
名字: xxxxxx
标题:00
用户编号:032096
b2C密码问题:1xxxx
b2CBillingAddrDecriminator:美国
b2CQA最后登录尝试:20140818132312.0Z
b2CDeliveryAddrDecriminator:美国
b2C密码答案:xxxxxxxxxxxxxxxxxxxxx
b2CHomeAddrDecriminator:美国
SN:xxxxxxxxxxxxxxx
b2CLastProfileChange:20140818132312.0Z
b2C用户隐私同意:20071220171228.0Z
邮件:xxxxxxxxxxxxxxxxxxxxx
b2CForgottenPasswordToken:xxxxxxxxxxxxxxx
dn: uid=03310326,OU=客户,OU=人员,O=B2C
对象类别:顶部
对象类别:人
对象类:organizationalPerson
对象类:用户
对象类:inetOrgPerson
对象类:b2CCustomerPerson
联系电话:xxxxxx
我:xxxxx
圣: GA
邮政编码: xxxxxx
尊贵名称:uid=03310326,OU=客户,OU=人员,O=B2C
实例类型:4
创建时间:20120825012935.0Z
更改时间:20160122015941.0Z
uSN创建:8104543
uSN更改:81191393
姓名:03310326
objectGUID:: a9Plz3ZBJE2XLjKzbi+jlA==
密码最后设置:129903317755454064
objectSid:: AQUAABjdlU4Ng+r7OCPkQBbSZU+kRb2ssiuk2w==
对象类别:CN=人、CN=架构、CN=配置、CN={C3B2C981-53A4-46FE-A3
 08-1CA306D4D63D}
dSCorePropagationData:16010101000000.0Z
最后登录时间戳:130979015771278217
b2CSmDisabledFlag:0
b2CQALoginLockout:FALSE
首选语言: EN
b2C后缀代码:02
b2CSm密码数据:xxxxxxxxxLZzGFgBmq2XPjD7qwXYAFl6e9G4jvQf6fMp306ksGE
EWEf9xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
b2CWorkAddrDecriminator:美国
中间名:A
b2CQALoginAttempt:0
家庭电话:xxxxxxxxxxxxxxxxxx
名字:xxxxxxxxxxxxxxx
标题:01
手机:3610625
用户编号:03310326
b2C密码问题: xxxxxxxxxxxx
b2CBillingAddrDecriminator:美国
b2CQA最后登录尝试:20130720213011.0Z
b2CDeliveryAddrDecriminator:美国
b2C密码问题2: xxxxxxxxxxxx
b2CMobileAreaCode: xxxxxxx
b2CPasswordAnswer2: xxxxxxxxxxxx
b2C密码答案:xxxxxxxxxxx
b2CHomeAddrDecriminator:美国
SN:xxxxxxxxxxxxxxxxxx
街道地址:xxxxxxxxxxxxxxx
b2CLastProfileChange:20130720213011.0Z
b2C最后密码更改:20120825012935.0Z
b2CHomeAddressZipCodeS4: xxxxxxxxxx
b2C用户隐私同意:20120825012935.0Z
b2CHomeAreaCode: xxxxxxxx
邮件:xxxxxxxxxxxx
b2CUserProfile状态:201
b2COriginatingAppID:xxxxxxxxxxxxxxx

我需要像这样的输出

dn: uid=032096,OU=客户,OU=People,O=B2C|objectClass: 顶部|......
dn: uid=03310326,OU=客户,OU=People,O=B2C|objectClass: 顶部|....

答案1

您可以使用paste这样做,例如:

粘贴-d'|' -s 文件名

答案2

尝试awk实现这一目标:

awk '/dn/{if(b)print b;b=$0;next}NF{b=b "|" $0}END{print b}' 文件名 > file.out

相关内容