我有过于简化的源文件和参考文件。
源文件,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=任务,cn=组,dc=域 更改类型: 修改 添加: uniquemember uniquemember: cn=user1,cn=users,dc=domain
dn:cn =任务,cn =组,dc =域更改类型:修改添加:uniquemember uniquemember:cn = user9,cn =用户,dc =域
dn:cn =任务,cn =组,dc =域更改类型:修改添加:uniquemember uniquemember:cn = user10,cn =用户,dc =域
r.txt 参考文件: uniquemember: cn=user9,cn=users,dc=domain uniquemember: cn=user8,cn=users,dc=domain
我想要一个脚本,用于使用参考记录 uniquemember 文件来提取源文件的 user9 行和上面的 3 行,添加到结果文件 usermember_add.ldif 中。
dn:cn =任务,cn =组,dc =域更改类型:修改添加:uniquemember uniquemember:cn = user9,cn =用户,dc =域