내 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