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 的参数中没有空格,它就会起作用。这也适用于参数在自己行上的情况,但在这种情况下,前一种方法可能更健壮。