在linux中查找string并replace行

我想要做到以下几点,但我似乎无法find一个优雅的方式来做到这一点。

我有一个如下所示的文本文件:

..more values stuff = 23 volume = -15 autostart = 12 more values.. 

现在“音量”值可能会根据情况而改变。 我需要一个脚本,可以find“volume = xxx”的文本行,然后用“volume = 0”行replace它。 什么是这个优雅的解决scheme? 文中的这一行不能保证是第一行,所以我需要先find它的方法。

Solutions Collecting From Web of "在linux中查找string并replace行"

 sed 's/^volume =.*/volume = 0/g' file.txt 

用sed你可以说:

 sed '/^volume/s/.*/volume = 0/' infile 

将内容传送到此命令中:

 sed -e 's/^volume\s*=\s*-\?[0-9]\+$/volume = 0/' 

sed 's/^volume=\(.*\)$/volume=1/g' inputfile

@ jliu83,在正则表达式上做一些阅读。 这将使sed命令中的模式匹配更容易理解。

http://en.wikipedia.org/wiki/Regular_expression