소스 및 참조 파일에서 줄을 추출하고 결과 파일에 추가하는 방법은 무엇입니까?

소스 및 참조 파일에서 줄을 추출하고 결과 파일에 추가하는 방법은 무엇입니까?

소스와 참조 파일을 지나치게 단순화했습니다.

소스 파일, 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=도메인

관련 정보