如何从源文件和参考文件中提取行,添加到结果文件中?

如何从源文件和参考文件中提取行,添加到结果文件中?

我有过于简化的源文件和参考文件。

源文件,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 =域

相关内容