BASH:更改一行中的单个变量

时间:2018-10-09 12:17:25

标签: bash sed

让我们假设一个文件包含以下行:

PARAMETER = 10   # Comment ....

在Bash脚本中,我通常使用

修改PARAMETER值。
sed -i "s/PARAMETER = .*/PARAMETER = 20/" FILE

但这会在以后删除注释。有保留建议吗?

2 个答案:

答案 0 :(得分:4)

.*的意思是any character, reapeated any amount of time。按照这种逻辑,#属于此类,将被捕获。

为避免这种情况,最简单的方法是使用否定的字符类,即编写any character that isn't in a set of specific chracters

语法为[^<any character you don't want>]

您可以写:

sed -i "s/PARAMETER = [^#]*/PARAMETER = 20 /" FILE

答案 1 :(得分:0)

您需要与以下任何评论相匹配。

sed -i "s/PARAMETER = [0-9]*\(.*\)/PARAMETER = 20 \1/" FILE