unix SED命令替换部分键值对

Vij*_*jiy 0 unix sed

我们有要求,我需要替换配置文件中的部分参数值。

例子

key1=123-456
Run Code Online (Sandbox Code Playgroud)

我需要用新值替换连字符后的值。

我得到了其他项目中正在使用的命令,但我不确定它是如何工作的。

命令

[test]$ cat test_sed_key_value.txt
key1=123-456
[test]$ sed -i -e '/key1/ s/-.*$/-789/' test_sed_key_value.txt
[test]$
[test]$ cat test_sed_key_value.txt
key1=123-789
[test]$
Run Code Online (Sandbox Code Playgroud)

如果有人可以解释上面的命令是如何执行的,或者是否有一种更简单的方法来使用 sed 来执行此操作,那将会很有帮助。

Yun*_*sch 5

以下是该命令行的各个部分的列表,每个部分后面都有一个简短的说明:

sed 
Run Code Online (Sandbox Code Playgroud)

使用哪个工具

-i
Run Code Online (Sandbox Code Playgroud)

标志:将效果直接应用于已处理的文件(而不创建输入文件的副本)

-e
Run Code Online (Sandbox Code Playgroud)

表达式参数:要应用的 sed 代码如下

/key1/
Run Code Online (Sandbox Code Playgroud)

“address”:仅处理应用此正则表达式的行,即包含文本“key1”的行

s/replacethis/withthis/
Run Code Online (Sandbox Code Playgroud)

命令:进行搜索和替换,“replacethis”和“withthis”是解释的旁边

-.*$
Run Code Online (Sandbox Code Playgroud)

正则表达式:(命令行中实际的内容而不是“replacethis”)表示“减号”的正则表达式,后跟任意数量的任何内容,直到行尾

-789
Run Code Online (Sandbox Code Playgroud)

文字:(命令行中实际的内容而不是“withthis”)只是字符串“-789”

test_sed_key_value.txt
Run Code Online (Sandbox Code Playgroud)

文件参数:处理该文件

我想不出任何方法可以更简单地做到这一点。显示的命令已经对输入文件的格式使用了一些假设。