gpt4 book ai didi

linux - 如何在 linux 中用不同的字符串替换相同的事件

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:55:32 24 4
gpt4 key购买 nike

我已经看到几个类似的问题,但我有一个不同的情况在这里发布。我必须将不同的字符串替换为文件中的相同事件。我用过

sed -i 's/X/Y/g' 文件.txt

对于类似的情况,我使用了像这样的行号

sed -i '3s/X/Y/g ; 4s/X/Z/g'文件.txt

只有当这些字符串总是在同一行时才有可能。

例如:文件.txt

这个颜色是

...更多行

这个颜色是

...更多行

这个颜色是

...更多行

这个颜色是

...更多行`

我需要将它们更改为

这个颜色是蓝色

...更多行

这个颜色是红色

...更多行

这个颜色是绿色

...更多行

这个颜色是黄色

...更多行

不使用行号。如果添加更多信息,这些字符串的行号可能会随时更改?

谁能帮忙。谢谢

最佳答案

awk 助您一臂之力!

如果线条多于颜色,这将循环显示颜色

$ awk -v colors='blue,red,green,yellow' 'BEGIN {n=split(colors,v,",")}
/color/ {$0=$0 OFS v[i++%n+1]}1' file

将其嵌入带引号的字符串中,完全删除双引号会更容易。只需更改为

$ awk -v colors='blue red green yellow' 'BEGIN {n=split(colors,v)}
/color/ {$0=$0 OFS v[i++%n+1]}1' file

如果你的颜色不是单个单词,你不能使用上面的,所以回到用逗号(或任何其他分隔符)分割,只需要转义它们

$ awk -v colors='true blue,scarlet red,pistachio green,canary yellow' '
BEGIN {n=split(colors,v,\",\")}
/color/ {$0=$0 OFS v[i++%n+1]}1' file

关于linux - 如何在 linux 中用不同的字符串替换相同的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46898425/

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