gpt4 book ai didi

bash - Cat 从文件输出并一次用 sed 替换单词

转载 作者:行者123 更新时间:2023-11-29 09:28:22 26 4
gpt4 key购买 nike

我对这个很陌生,所以感谢您的耐心等待

我有一个包含数百个值的文本文件,我想从中填充一个 ldif 模板。所以例如文件 example1.txt 有

**Consumer1**

**Consumer2**

并且 ldif.txt 有

***dn: ,cn=Insert,o=Insert
uid:
userPassword:
objectclass: top
objectclass: inetOrgPerson
objectclass: person
objectclass: organizationalPerson
businessCategory:
sn:
cn:***

***dn: ,cn=Insert,o=Insert
uid:
userPassword:
objectclass: top
objectclass: inetOrgPerson
objectclass: person
objectclass: organizationalPerson
businessCategory:
sn:
cn:***

对于此示例,我想循环遍历 example1.txt 和 sed,以便它第一次遇到“dn:”时将其替换为“dn:consumer1”,然后是第二个“dn:consumer2”,依此类推,所以我希望它之后看起来像这样

*dn:**consumer1** ,cn=Insert,o=Insert
uid:
userPassword:
objectclass: top
objectclass: inetOrgPerson
objectclass: person
objectclass: organizationalPerson
businessCategory:
sn:
cn:*

*dn:**consumer2** ,cn=Insert,o=Insert
uid:
userPassword:
objectclass: top
objectclass: inetOrgPerson
objectclass: person
objectclass: organizationalPerson
businessCategory:
sn:
cn:*

我已经试过了,但它只是循环遍历文件并用 dn:consumer2 代替所有条目,而不是 1,而不是 2。

for i in `cat example1.txt`
do
sed "s/dn:/dn: $i/" ldif.txt > hello.txt
done

输出如下

*dn:**consumer2** ,cn=Insert,o=Insert
uid:
userPassword:
objectclass: top
objectclass: inetOrgPerson
objectclass: person
objectclass: organizationalPerson
businessCategory:
sn:
cn:*

*dn:**consumer2** ,cn=Insert,o=Insert
uid:
userPassword:
objectclass: top
objectclass: inetOrgPerson
objectclass: person
objectclass: organizationalPerson
businessCategory:
sn:
cn:*

有没有什么方法可以让它逐步循环并来回替换,这样我们就可以第一次点击 dn:consumer1,第二次点击 dn:consumer2 等等?

最佳答案

以下是使用 awk 的方法:

$ awk 'NR==FNR{a[NR]=$0;next}$1=="***dn:"{$1="*dn:"a[++k]}1' example1.txt ldif.txt 
*dn:**Consumer1** ,cn=Insert,o=Insert
uid:
userPassword:
objectclass: top
objectclass: inetOrgPerson
objectclass: person
objectclass: organizationalPerson
businessCategory:
sn:
cn:***

*dn:**Consumer2** ,cn=Insert,o=Insert
uid:
userPassword:
objectclass: top
objectclass: inetOrgPerson
objectclass: person
objectclass: organizationalPerson
businessCategory:
sn:
cn:***

关于bash - Cat 从文件输出并一次用 sed 替换单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19594463/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com