Unixでawkのcloumn値に基づいて行を列に変換する方法

Unixでawkのcloumn値に基づいて行を列に変換する方法

私は次のデータを持っています

dn: uid=032096,OU=顧客,OU=従業員,O=B2C
オブジェクトカテゴリ:トップ
オブジェクトカテゴリ:人
オブジェクトクラス: organizationPerson
オブジェクト評価:ユーザー
オブジェクトクラス: 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
b2CQAログインロック:FALSE
b2Cパスワード検索24時間開始時間:20140818092312.0Z
b2C サーフィックスコード: 00
b2CPwdNotSetup: 偽
b2CSm パスワードデータ: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxG0G+3K7wga6Fd 6ujkLxkBaUEeEzCc8DmyfaKJTVn+QHNCaCq19TVZLhXVAEzoJGrTwY=
b2CWorkAddrDecriminator: アメリカ
b2CQAログイン試行: 0
名前: xxxxxx
タイトル: 00
ユーザー番号:032096
b2C パスワードの問題: 1xxxx
b2CBillingAddrDecriminator: アメリカ
b2CQA 最後のログイン試行: 20140818132312.0Z
b2CDeliveryAddrDecriminator: アメリカ
b2Cパスワードの回答:xxxxxxxxxxxxxxxxxxxxx
b2CHomeAddrDecriminator: アメリカ
SN:xxxxxxxxxxxxxxx
b2ClastProfileChange:20140818132312.0Z
b2C利用者個人情報同意:20071220171228.0Z
Eメール: xxxxxxxxxxxxxxxxxxxxx
b2CForgottenPasswordToken:xxxxxxxxxxxxxxx
dn: uid=03310326,OU=顧客,OU=従業員,O=B2C
オブジェクトカテゴリ:トップ
オブジェクトカテゴリ:人
オブジェクトクラス: organizationPerson
オブジェクト評価:ユーザー
オブジェクトクラス: 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
b2CQAログインロック:FALSE
好みの言語:EN
b2C サーフィックスコード: 02
b2CSmパスワードデータ:xxxxxxxxxLZzGFgBmq2XPjD7qwXYAFl6e9G4jvQf6fMp306ksGE
EWEf9xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
b2CWorkAddrDecriminator: アメリカ
中間名: A
b2CQAログイン試行: 0
ホーム電話番号:xxxxxxxxxxxxxxxxxx
名前: xxxxxxxxxxxxxxx
タイトル: 01
モバイル:3610625
ユーザー番号:03310326
b2Cパスワード質問:xxxxxxxxxxxx
b2CBillingAddrDecriminator: アメリカ
b2CQA 最後のログイン試行: 20130720213011.0Z
b2CDeliveryAddrDecriminator: アメリカ
b2Cパスワード質問2:xxxxxxxxxxxx
b2CMobileAreaCode: xxxxxxx
b2CPasswordAnswer2: xxxxxxxxxxxx
b2Cパスワードの回答:xxxxxxxxxx
b2CHomeAddrDecriminator: アメリカ
SN:xxxxxxxxxxxxxxxxxxxxx
住所:xxxxxxxxxxxxxxx
b2ClastProfileChange:20130720213011.0Z
b2C 最近のパスワード変更: 20120825012935.0Z
b2CHomeAddressZipCodeS4: xxxxxxxxxx
b2C利用者個人情報同意:20120825012935.0Z
b2CHomeAreaコード: xxxxxxxx
Eメール: xxxxxxxxxxxx
b2CUserプロファイルステータス:201
b2COriginatingAppID:xxxxxxxxxxxxxxx

このような出力が必要です

dn: uid=032096,OU=顧客,OU=人,O=B2C|objectClass: トップ|......
dn: uid=03310326,OU=顧客,OU=人,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

関連情報