소스와 참조 파일을 지나치게 단순화했습니다.
소스 파일, s.txt
:
dn: cn=user1, cn=users,dc=domain
changetype: modify
replace: userpassword
userpassword: {SSHA}$%^&
dn: cn=user2, cn=users,dc=domain
changetype: modify
replace: userpassword
userpassword: {SSHA}$%^&dffd
dn: cn=user3, cn=users,dc=domain
changetype: modify
replace: userpassword
userpassword: {SSHA}$%^&dfd32
참조 문서, r.txt
:
dn: cn=user2, cn=users,dc=domain
참조 레코드 dn 파일을 사용하여 소스 파일의 user2'dn 라인을 추출하고 나중에 3라인을 추출하여 결과 파일에 추가하는 스크립트를 원합니다 user_chg.ldif
.
user_chg.ldif
:
dn: cn=user2, cn=users,dc=domain
changetype: modify
replace: userpassword
userpassword: {SSHA}$%^&dffd
답변1
어떻습니까(귀하의 grep
버전에서 해당 -A
옵션을 허용하는 경우):
grep -A3 -f r.txt s.txt
답변2
사용
while read LINE; do
sed -n -e "/^$LINE\$/,/^$/p" s.txt
done < r.txt
답변3
내 질문에 답변해 주신 RalfFriedl에게 감사드립니다. 약간 다른 문제가 있어서 이해할 수 없습니다. s.txt 소스 파일:
dn: cn=task,cn=group,dc=domain 변경 유형: 수정 및 추가: Uniquemember Uniquemember: cn=user1,cn=users,dc=domain
dn:cn=작업,cn=그룹,dc=도메인 변경 유형:수정 추가:uniquemember Uniquemember:cn=user9,cn=user,dc=도메인
dn:cn=작업,cn=그룹,dc=도메인 변경 유형:수정 추가:uniquemember Uniquemember:cn=user10,cn=user,dc=도메인
r.txt 참조 파일: 고유 멤버: cn=user9,cn=users,dc=도메인 고유 멤버: cn=user8,cn=users,dc=도메인
참조 레코드 Uniquemember 파일을 사용하여 소스 파일에서 user9 줄과 위의 3줄을 추출하고 이를 결과 파일 usermember_add.ldif에 추가하는 스크립트가 필요합니다.
dn:cn=작업,cn=그룹,dc=도메인 변경 유형:수정 추가:uniquemember Uniquemember:cn=user9,cn=user,dc=도메인