Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
替换linux命令文件中的未知行_Linux_Bash_Sed - Fatal编程技术网

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

替换linux命令文件中的未知行,linux,bash,sed,Linux,Bash,Sed,我正在尝试使用LinuxBash更改文本文件中带有模式的行。 我试过sed命令: sed -i 's/old/new/' < file.txt 这个命令行的问题是我必须指定确切的旧单词。我想更改数千个旧单词有如下模式的文件:old1、old2、old3、…old10000 我想将所有文件中的oldxxx更改为old1 有什么办法吗 您可以使用以下内容: sed -i 's/old[0-9]\{1,\}(/old1(/' file.txt 这将匹配old,后跟一个或多个数字和a,并将其替

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

sed -i 's/old/new/' < file.txt
这个命令行的问题是我必须指定确切的旧单词。我想更改数千个旧单词有如下模式的文件:old1、old2、old3、…old10000 我想将所有文件中的oldxxx更改为old1
有什么办法吗

您可以使用以下内容:

sed -i 's/old[0-9]\{1,\}(/old1(/' file.txt
这将匹配old,后跟一个或多个数字和a,并将其替换为old1

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

sed -r -i 's/old[0-9]+\(/old1(/' file.txt
相反,它做同样的事情。在某些版本的sed上,使用-E开关代替-r


如果在同一行上有多个oldXX模式实例,您可能还需要使用g修饰符s/../../…/g进行全局替换。

那么您要更改的内容是old,后跟一些数字?你想把它改成什么?我想一直把oldxx改成old1@KJohn您应该更新您的问题,以包括一些示例模式以及它的预期输出。这将有助于得到更好、更清晰的答案。