Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.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
Shell 如何在替换文件中的其他字段时跳过字段_Shell_Unix_Scripting - Fatal编程技术网

Shell 如何在替换文件中的其他字段时跳过字段

Shell 如何在替换文件中的其他字段时跳过字段,shell,unix,scripting,Shell,Unix,Scripting,我有100个文件,行如下: ABC+123+74859308812345'XYZ ABC+12+64859603759604'XYZ ABC+41+73596027485910'XYZ 在所有文件中,我希望将第二个+后面的前10个数字替换为NEWREF,如下所示: ABC+123+NEWREF2345'XYZ ABC+12+NEWREF9604'XYZ ABC+41+NEWREF5910'XYZ 您可以使用来修改文件的内容 sed -i 's/[0-9]\{10\}/NEWREF/g' &

我有100个文件,行如下:

ABC+123+74859308812345'XYZ
ABC+12+64859603759604'XYZ
ABC+41+73596027485910'XYZ
在所有文件中,我希望将第二个
+
后面的前10个数字替换为
NEWREF
,如下所示:

ABC+123+NEWREF2345'XYZ
ABC+12+NEWREF9604'XYZ
ABC+41+NEWREF5910'XYZ

您可以使用来修改文件的内容

 sed -i 's/[0-9]\{10\}/NEWREF/g' <filename>
现在,您可以在循环中使用此命令来迭代100个文件,也可以使用带模式的ls来传递要在其中进行替换的文件列表

sed -i 's/[0-9]\{10\}/NEWREF/g' `ls <filename pattern>`
sed-i's/[0-9]\{10\}/NEWREF/g'`ls`

向我们展示您迄今为止的尝试。嗨,Vikas,感谢您的回复。我尝试了这个命令,它确实起了作用,但它最终也改变了文件的其他字段,但我试图只改变这个字段。该文件还有其他类似的字段,如上所述,但我特别希望更改以“ABC+”开头的字段值。这里有什么可以做的吗?感谢Shashanks感谢Vikas提供了解决此问题的初步方法。当这个模式出现在文件中时,我找到了这个实例,sed-I的/[0-9]\{10\}/NEWREF/2'
ls
解决了这个问题。
sed -i 's/[0-9]\{10\}/NEWREF/g' `ls <filename pattern>`