Shell 如何在替换文件中的其他字段时跳过字段
我有100个文件,行如下: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' &
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>`