Bash one liner 来改变配置参数

TRA*_*TRA 11 shell-script text-processing

我有一个具有以下结构的配置文件。

ValueOne = 1
ValueTwo = 2
ValueThree = 3
Run Code Online (Sandbox Code Playgroud)

我想要一个单行 bash 脚本来查找 ValueTwo 并将值更改为 22222。

任何的想法? 不是学校的事

drs*_*drs 12

我打赌会有更好的,但这是我的想法:

如果配置文件在自己的行上有参数

sed -i '/ValueTwo/s/= .*/= 22222/' config_file
Run Code Online (Sandbox Code Playgroud)
  • /ValueTwo/:搜索字符串ValueTwo以查找要操作的行(地址)
  • s/= .*/= 22222/:在与上述搜索匹配的行上,替换= .*为= 22222( Substitute )
  • = .*: 搜索=后跟空格 ( ) 字符后跟 0 个或多个任意字符 ( .*) 的字符(正则表达式示例)
  • = 22222 : 用文字字符串替换找到的内容 = 22222

这将就地替换 config_file 的内容。要使用更改的参数创建新文件,请删除-i并放置> new_file在行尾。


如果您的配置文件在同一行上有参数(如未编辑的问题):

sed -i 's/ValueTwo = [^ ]*/ValueTwo = 22222/' config_file
Run Code Online (Sandbox Code Playgroud)

这也将就地替换 config_file 的内容。只要 ValueTwo 的参数中没有空格,它就会起作用。这也适用于参数在自己行上的情况,但在这种情况下,前一种方法可能更健壮。

  • 我想你赌输了。 (6认同)