在linux中查找字符串并替换行

时间:2012-09-30 17:45:07

标签: linux replace sed find

我想做以下事情,但我似乎无法找到一种优雅的方式来做到这一点。

我有一个看起来像这样的文本文件:

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

现在,“音量”值可能会根据情况而改变。我需要一个脚本,可以找到带有“volume = xxx”的文本行,然后将其替换为“volume = 0”行。什么是优雅的解决方案?文本中的这一行不保证是第一行,所以我需要一种方法来找到它。

5 个答案:

答案 0 :(得分:10)

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

答案 1 :(得分:2)

用sed你可以说:

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

答案 2 :(得分:1)

将内容传递给此命令:

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

答案 3 :(得分:1)

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

答案 4 :(得分:0)

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

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