从命令行查找&替换多个文档中的文本
如果您熟悉命令行,并且曾经遇到需要在一组多个文本文档中查找和替换单词、短语、URL 或字符的情况,那么 perl 可以很好地完成这项工作。一个简单的命令字符串将非常快速地对文本执行组批量查找和替换,无论是在单个文档中还是跨越一组多个文档。
与命令行中的许多内容一样,没有确认过程,因此您需要在启动命令之前确保语法设置正确,否则您可能需要执行另一次查找和替换修复你的错别字。
基本命令语法如下:perl -pi -w -e 's/THIS/THAT/g;' /path/to/files.txt
对于单词示例,如果您需要将每个.txt文件中的“食人魔”的所有实例替换为“玉米面包”在“Documents”文件夹中,然后您将使用以下命令:
perl -pi -w -e 's/ogre/cornbread/g;' ~/Documents/.txt
对于查找和替换整个短语的示例,假设我们要替换整个句子“The Chocolate Factory ”和“The Wizard of Oz”在Documents目录下的一组以“Films”开头的.txt文件中:
perl -pi -w -e 's/巧克力工厂/绿野仙踪/g;' ~/Documents/Films.txt
查找和替换立即完成。您可以使用 cat 和 grep 来检查更改:
cat ~/Documents/Films124.txt |grep绿野仙踪"
诚然,这是相当先进的,是的,可以通过 TextWrangler 和 BBEdit 等 GUI 应用程序以更加用户友好的方式通过多个文档批量查找和替换,但有时命令行速度更快对于像这样的快速任务和其他类似的任务,而且它不需要任何额外的下载即可使用。
对Lifehacker的绝妙技巧大加赞赏。
Update:“sed”命令是另一种通过命令行进行快速查找和替换的方法。覆盖 sed 主要是另一篇文章的主题,但是使用 sed 完成此任务的基本语法更简单,因此更容易记住:
sed -i 's/THIS/THAT/g' /path/to/files.txt
没有对错之分,所以用perl还是sed就看个人喜好了。