ヘッダーの異なるテキストファイルをcsvに並べ替える

ヘッダーの異なるテキストファイルをcsvに並べ替える

私のLinuxコンピュータには次のファイルがあります。

dn: cn=333-MMMM-PPPP_DET1,ou=groups,ou=functional,o=company
member: cn=aaa,ou=users,ou=accounts,o=company
member: cn=bbb,ou=users,ou=accounts,o=company
member: cn=ccc,ou=users,ou=accounts,o=company
member: cn=ddd,ou=users,ou=accounts,o=company
member: cn=eee,ou=users,ou=accounts,o=company

dn: cn=333-MMMM-PPPP_DET2,ou=groups,ou=functional,o=company

dn: cn=333-MMMM-PPPP_DET3,ou=groups,ou=functional,o=company
member: cn=aaa,ou=users,ou=accounts,o=company
member: cn=ggg,ou=users,ou=accounts,o=company
 

追加のアプリケーションからインポートするために、単純な形式のcsvに変換したいと思います。

aaa;333-MMMM-PPPP_DET1 
bbb;333-MMMM-PPPP_DET1
ccc;333-MMMM-PPPP_DET1
ddd;333-MMMM-PPPP_DET1
eee;333-MMMM-PPPP_DET1
aaa;333-MMMM-PPPP_DET3
ggg;333-MMMM-PPPP_DET3

私は以下を試しました。 awk '1;/^$/{exit}->最初のハングまですべての行を表示します(計画は印刷し、別のファイルに移動して削除することです。ループから) - >最初の行をインポートして awk 'FNR == 1 {suffix=$0} {print $0suffix}'次の行に入れます。

この問題に対する解決策が見つかりませんでした。どんな提案がありますか?

ベストアンサー1

$ awk -F'[,=]' -v OFS=',' '/^dn/{dn=$2} /^me/{print $2, dn}' file
aaa,333-MMMM-PPPP_DET1
bbb,333-MMMM-PPPP_DET1
ccc,333-MMMM-PPPP_DET1
ddd,333-MMMM-PPPP_DET1
eee,333-MMMM-PPPP_DET1
aaa,333-MMMM-PPPP_DET3
ggg,333-MMMM-PPPP_DET3

おすすめ記事