如何用sed替换整线?

Mic*_*ael 110 regex sed

假设我有一个带行的文件

aaa=bbb

现在我想用以下代替它们:

aaa=xxx

我可以这样做:

sed "s/aaa=bbb/aaa=xxx/g"

现在我有一个包含几行的文件,如下所示:

aaa=bbb
aaa=ccc
aaa=ddd
aaa=[something else]

我怎么能代替所有该行aaa=[something]aaa=xxx使用sed的

Joh*_*yle 182

试试这个:

sed "s/aaa=.*/aaa=xxx/g"
Run Code Online (Sandbox Code Playgroud)

  • 什么是`g`? (4认同)
  • 习惯的力量,在这种情况下可以被忽略 - 它被用作线的全局替代品来替换每个匹配而不仅仅是第一个.在这种情况下,虽然只有第一个匹配,因为`.*`. (4认同)
  • Michael J. Barber, `g` 用替换替换所有正则表达式实例 (2认同)
  • 添加 `-i` 以就地更改文件 (2认同)

Mr.*_*. T 99

您还可以使用sed的更改行来完成此任务:

sed -i "/aaa=/c\aaa=xxx" your_file_here
Run Code Online (Sandbox Code Playgroud)

这将通过并查找通过aaa=测试的任何行,这意味着该行包含字母aaa=.然后用aaa = xxx替换整行.您可以^在测试开始时添加一个,以确保只获得aaa=以您开头的行,但这取决于您.

  • OS X的`sed`要求`c`后跟反斜杠和换行符,并且它不会在插入的文本中附加换行符,但你可以使用例如`$'/ aaa =/c \\\naaa = XXX \n'`. (9认同)
  • OSX使用BSD sed (4认同)
  • 这是最接近实际执行要求的操作...(但需要 Lri 的版本以实现可移植性) (3认同)

Mic*_*ber 41

像这样:

sed 's/aaa=.*/aaa=xxx/'
Run Code Online (Sandbox Code Playgroud)

如果你想保证它aaa=在行的开头,那就做:

sed 's/^aaa=.*/aaa=xxx/'
Run Code Online (Sandbox Code Playgroud)


Vij*_*jay 6

sed -i.bak 's/\(aaa=\).*/\1"xxx"/g' your_file
Run Code Online (Sandbox Code Playgroud)