在shell脚本文件中,假设有一行这样的行。
IP_address=192.168.1.12
从命令行,如何将其更改为?
IP_address=192.168.1.16
我认为“sed”可能无法完成,因为要替换的搜索字符串不是常量。也许“awk”?但我不是那么专家。非常感谢提示。
更具体地说,文件中的搜索模式是“x = y”,只能使用命令行工具替换为“x = z”。
额外,只是为了清除一些琐事
“y”不固定,只有“x”。
用简单的英语:我想在脚本中搜索变量“x”的定义,并将它定义的值更改为新值。我不关心(或不知道)“x”的旧值是什么,我只想将其更改为新值。
答案 0 :(得分:1)
Sed会运行得很好:
$ sed -e "/^$Y=/s/=.*/=$X/" $script > $script.new
模式/<search>/s/<old>/<new>/
表示:
<search>
(将是以$Y=
开头的行。)=$X
。请注意,整个脚本都是双引号,因此shell可以插入$X
和$Y
。
答案 1 :(得分:0)
使用awk,这是尽可能通用的:
awk -F= -v OFS="=" -v x="IP Address" -v y="192.168.1.16" '
$1 == x {$2 = y} 1
' file > tmp && mv tmp file