替换文件linux命令中的未知行

时间:2014-08-30 18:36:56

标签: linux bash sed

我正在尝试使用Linux bash在文本文件中更改带有模式的行。 我尝试了sed命令:

sed -i 's/old/new/' < file.txt

此命令行的问题我必须指定确切的“旧”字。我想更改数千个文件,其中旧单词的模式如下:old1(,old2(,old3(,.... old10000( 我想将oldxxx(在所有文件中更改为old1)( 任何想法如何做到这一点?

1 个答案:

答案 0 :(得分:3)

您可以使用以下内容:

sed -i 's/old[0-9]\{1,\}(/old1(/' file.txt

这匹配“old”后跟一个或多个数字和“(”并将其替换为“old1(”。

如果你的sed版本支持扩展正则表达式,你可以使用:

sed -r -i 's/old[0-9]+\(/old1(/' file.txt

相反,它做同样的事情。在某些版本的sed上,使用-E开关代替-r

如果您在同一行上有多个模式“oldXX(”)的实例,您可能还需要g修饰符(s/.../.../g)来进行全局替换。