sed "s/eth0/$change/" < ifcfg-eth0
我们的文件包含:
DEVICE=eth0
每次运行程序时,我想用我输入的任何输入替换eth0
。
具体而言,上述命令执行以下操作:
每次运行程序时,都会要求输入我们想要的值以替换eth0
。它确实替换了一次,但是下次运行脚本时,它不起作用,因为它不再有eth0
作为文件中的模式,它可以更改。
sed -i
只会进行一次更改,但我需要递归...
答案 0 :(得分:0)
你并不意味着&#34;递归&#34;你的意思是不止一次。而你的问题是你匹配错误的东西。
不要匹配您想要更改的值与您要更改的行匹配。
匹配/^DEVICE=/
即可,并替换您关注的部分或整个事物。
答案 1 :(得分:0)
<强> file.txt的:强>
DEVICE=eth0
试试这个:
$ change=wlan0
$ sed -r "s/(.*=).*/\1$change/" file.txt
DEVICE=wlan0
$ change=eth0
$ sed -r "s/(.*=).*/\1$change/" file.txt
DEVICE=eth0
答案 2 :(得分:0)
使用sed -i "s/^DEVICE=\(.*\)/DEVICE=$change/" ifcfg-eth0
。这应该用DEVICE=
替换$change
之后的任何模式。