用sed注释掉一行中的许多文件

时间:2017-08-20 12:47:29

标签: sed replace

我需要在一条路径上注释掉一行文件。该行读取

input_types = ['text']

我需要用

替换它
#input_types = ['text']

我想做点什么

sed -i 's/input_types/#input_types/g' path/to/files/*

但这会改变input_types的所有实例,我不希望这样。

我也试过

sed -i 's/input_types = ['text']/#input_types = ['text']/g' path/to/files/*

但它没有工作

如何只更改该特定实例?

1 个答案:

答案 0 :(得分:1)

你上次尝试相当不错,但有两件事需要改变:

  • 您使用单引号括起您的表达式,但单引号也是表达式的一部分 - 这会让您感到困惑。在这种情况下,最好使用双引号括起表达式。
  • [ ]括号必须使用反斜杠进行转义:\[ \]

因此,如果您将行更改为

sed -i "s/input_types = \['text'\]/#input_types = \['text'\]/g" /path/to/files/*

它应该有用。