关于递归文件运行和替换输入文件的主要内容

时间:2016-04-14 03:10:11

标签: linux awk sed

sed "s/eth0/$change/" <  ifcfg-eth0

我们的文件包含:

DEVICE=eth0

每次运行程序时,我想用我输入的任何输入替换eth0。 具体而言,上述命令执行以下操作:

每次运行程序时,都会要求输入我们想要的值以替换eth0。它确实替换了一次,但是下次运行脚本时,它不起作用,因为它不再有eth0作为文件中的模式,它可以更改。

sed -i只会进行一次更改,但我需要递归...

3 个答案:

答案 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之后的任何模式。