如何使用 sed 替换文件中的第三行?

如何使用 sed 替换文件中的第三行?

我需要使用 bash 脚本更改文件中的变量,我认为 sed 是可行的方法,但我无法弄清楚正则表达式。

我曾尝试替换文件中的一个字符,但后来发现我所替换的内容也会改变。

您能帮忙使用 sed 替换文件中的第 3 行和第 4 行吗?

我指的是

mode blender 
type kitchen 
blender.net 5.5.5.5.6:33 blender blender 
blender.com 5.5.5.5.5:33 blender blender

我希望能够改变整个第三行和第四行

blender.net x.x.x.x:33 blender blender

答案1

您可以指示要操作的行范围,例如sed在您的情况下3,4指示第 3 行至(和)第 4 行:

sed -r '3,4 s/.*/blender.net x.x.x.x:33 blender blender/' file.txt

例子:

$ cat file.txt
mode blender 
type kitchen
blender.net 5.5.5.5.6:33 blender blender
blender.com 5.5.5.5.5:33 blender blender

$ sed -r '3,4 s/.*/blender.net x.x.x.x:33 blender blender/' file.txt
mode blender 
type kitchen
blender.net x.x.x.x:33 blender blender
blender.net x.x.x.x:33 blender blender

这里我们在第 3 行和第 4 行执行所需的替换操作。


来自变量:

$ var=5.5.5.5.6:3

$ sed -r "3,4 s/.*/blender.net $var blender blender/" file.txt
mode blender 
type kitchen
blender.net 5.5.5.5.6:3 blender blender
blender.net 5.5.5.5.6:3 blender blender

相关内容