CAMBIOMINI2.txt 但现在我想用不同的 orgkey 值逐行替换,我想要 orgke-6ren">
gpt4 book ai didi

linux - 使用变量替换为 sed 并添加

转载 作者:太空宇宙 更新时间:2023-11-04 10:04:13 24 4
gpt4 key购买 nike

我正在做这个替换

sed 's/<n3:CustId>.*<\/n3:CustId>/<n3:CustId>'"${orgkey}"'<\/n3:CustId>/' CAMBIOMINI.txt > CAMBIOMINI2.txt

但现在我想用不同的 orgkey 值逐行替换,我想要 orgkey+=1 但我不知道如何在同一命令中为所有 CAMBIOMINI.txt 文件制作它

最佳答案

Sed 可能不适合您要更改替换的情况对于每次出现。如果我对您的要求的理解是正确的,那么以下将起作用:

awk 'FNR==NR {orgkey[++i]=$0; next}
{print gensub(/<n3:CustId>[^<]*<\/n3:CustId>/,"<n3:CustId>" orgkey[++j] "</n3:CustId>", "g")} ' orgkey.txt CAMBIOMINI1.txt

其中 orgkey.txt 包含替换列表:

orgkey_a
orgkey_b
orgkey_c
orgkey_d

CAMBIOMINI1.txt 看起来像:

<n3:CustId>id1</n3:CustId>
<n3:CustId>id2</n3:CustId>
<n3:CustId>id3</n3:CustId>
<n3:CustId>id4</n3:CustId>

那么结果将是:

<n3:CustId>orgkey_a</n3:CustId>
<n3:CustId>orgkey_b</n3:CustId>
<n3:CustId>orgkey_c</n3:CustId>
<n3:CustId>orgkey_d</n3:CustId>

请注意,它不假设 CAMBIOMINI1.txt 中的标 checkout 现多个时间在同一行:

<n3:CustId>id1</n3:CustId> <n3:CustId>id2</n3:CustId>
<n3:CustId>id3</n3:CustId>
<n3:CustId>id4</n3:CustId>

在这种情况下,请改用 Perl 版本:

perl -nle 'if (@ARGV) {push(@orgkey, $_); next}
s#<n3:CustId>.*?</n3:CustId>#"<n3:CustId>" . $orgkey[$j++] . "</n3:CustId>"#ge; print' orgkey.txt CAMBIOMINI1.txt

关于linux - 使用变量替换为 sed 并添加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53798306/

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