【发布时间】:2013-04-01 14:11:34
【问题描述】:
我只需要一点帮助,因为我很少接触 sed 或 awk。我正在尝试替换
String1.append("Hello"); // regexp to find this is: \w*\.append\(".*"\)
与
String1.append("Hello", 5); // note it has to figure out the length of "Hello"
我需要在数十万个文件中进行搜索和替换。而“你好可以是任何东西......包括“\n\n\n”,它应该是 3 而不是 6。示例:
s.append("\n\n\n"); ---> s.append("\n\n\n", 3);
提前感谢您的帮助...我想我需要 awk 来执行此操作,所以我现在正在阅读有关 awk 基础知识的教程...
【问题讨论】:
-
目标语言是Java,对吧?如果是 C,您可能会查看 Coccinelle。也许 Java 也存在类似的情况。
-
那么
s.append(foo)会发生什么,还是永远不会发生? -
目标语言是 C++。这是我试图添加此优化的一堆 .cpp 文件。 @Idav1s:你的意思是 foo 是一个变量吗?这就是我的正则表达式查找带引号的静态字符串的原因。
-
刚看了一下 Coccinelle,这对我正在尝试做的事情来说太过分了。我想要一个使用正则表达式的简单命令行脚本。 (我的意思是我可以在 C++ 中做到这一点,但它确实不是这项工作的最佳工具。)
-
除了将“\n”计为换行符之外,这很简单,因为“\n”的含义取决于上下文。如果仅打印为“\n”,则它是一个换行符,但作为“\\n”的一部分,它是一个反斜杠,后跟字母“n”。