替换文件中的行

use*_*552 0 unix linux bash shell sed

如何替换文件中以文字开头aaa的行我不知道该行的位置.

files.txt:

sadasd_dsada = (aa,bb,cc)
aaa = (aa,bb,cc)
sadasd_dsada = (aa,bb,cc)
Run Code Online (Sandbox Code Playgroud)

更换:

aaa = (aa,bb,cc)
Run Code Online (Sandbox Code Playgroud)

对于:

aaa = (dd,ee,ff)
Run Code Online (Sandbox Code Playgroud)

Chr*_*our 7

最简单的方法是用以下代码进行替换sed:

$ sed 's/^aaa = (aa,bb,cc)$/aaa = (dd,ee,ff)/' file
sadasd_dsada = (aa,bb,cc)
aaa = (dd,ee,ff)
sadasd_dsada = (aa,bb,cc)
Run Code Online (Sandbox Code Playgroud)

字符^$分别在regexp中匹配行的开头和结尾,这意味着只有整行匹配才会进行替换.

一旦您对更改感到满意,请使用-i选项保存回文件.

$  sed -i 's/^aaa = (aa,bb,cc)$/aaa = (dd,ee,ff)/' file
Run Code Online (Sandbox Code Playgroud)

编辑:

$ cat file
sadasd_dsada = (aa,bb,cc)
aaa = (aa,bb,cc)
aaa = foo
sadasd_dsada = (aa,bb,cc)
aaa = bar

$ sed 's/^aaa = .*/aaa = (dd,ee,ff)/' file
sadasd_dsada = (aa,bb,cc)
aaa = (dd,ee,ff)
aaa = (dd,ee,ff)
sadasd_dsada = (aa,bb,cc)
aaa = (dd,ee,ff)
Run Code Online (Sandbox Code Playgroud)