gpt4 book ai didi

linux - 在linux中使用 "sed"命令替换文本

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

我有一个关于在 linux 中使用 sed 的具体问题。

假设有一个字符串“Hello to the world version 1.0.0.1”

现在我想从文件中获取新版本并更新它

例如新版本存在于/etc/NewVersion

那么我们可以做这样的事情吗:

$newVersion = "/etc/NewVersion"
sed -i "s/1.0.0.1/$newVersion/g" /etc/motd

还有一种方法可以假设版本的最后一个数字发生变化,从 1.0.0.1 到 1.0.0.2 之类的其他东西,我怎样才能使它通用,无论版本是什么,我都能从中获取新版本文件路径并用 sed 更新它?

最佳答案

sed 并不真正支持传递参数。更好的解决方案是 awk:

awk -v overs="1.0.0.1" -v newver="1.0.0.2" '$0 ~ overs { flag=0;match($0,overs);print substr($0,1,RSTART-1)newver } $0 !~ overs { flag=1 } flag' /etc/motd

旧版本号的模式匹配。如果存在,则通过设置 flag=0 来停止行打印。然后匹配旧版本号并打印该行的其余部分加上新版本号。否则,设置 flag=1 并打印该行。

关于linux - 在linux中使用 "sed"命令替换文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45443773/

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