我有数百个文件需要批量替换文本。
我知道在NotePad++中,我可以使用“Files”,同时批量替换所有文件中的文本。我需要将每个文件中的YYYYYYYYY替换为该特定文件的名称。
是否有任何方法可以使用它们的扩展或正则表达式搜索模式来做到这一点?
另外,我有一个短键CTRL + D设置来自动复制文件名,以防.
如果能对此提供任何帮助,我们将不胜感激。如果这样更容易的话,我也愿意通过shell来做这件事。
发布于 2014-07-30 19:10:06
使用perl一行程序
perl -i -pe 's/Y{9}/$ARGV/g' file1 file2 file3或在窗户上引用:
perl -i.bak -pe "s/Y{9}/$ARGV/g" file1 file2 file3解释:
交换机:
-i:编辑已到位的<>文件(如果提供扩展名,则进行备份)-p:为输入文件中的每一行创建一个while(<>){...; print}循环。-e:告诉perl在命令行上执行代码。码
s/Y{9}/.../g:搜索和替换连续9个Y$ARGV:在从<>读取时包含当前文件的名称。如果您想在不显式列出文件的情况下将其应用于许多文件,则可以使用:
perl -i -pe 's/Y{9}/$ARGV/g' *.py您可以在windows上使用glob间接地实现这一点。
perl -i.bak -pe "BEGIN {@ARGV = glob('*.py')} s/Y{9}/$ARGV/g"https://stackoverflow.com/questions/25044966
复制相似问题