【发布时间】:2013-02-23 22:22:14
【问题描述】:
我已经阅读了一些关于 sed 和 awk 的内容,并且了解它们都是文本操纵器。
我计划使用其中一个来编辑文件组(某些编程语言、js、python 等的代码),以对大量文件进行类似的更改。 目前主要是编辑函数定义(传递的参数)和变量名,但我可以做得越多越好。
我想知道是否有人尝试过类似的事情,那些尝试过的人是否有任何明显的陷阱需要注意?以及 sed 和 awk 中的哪一个更适合/更适合这种应用程序。 (或者可能是完全不同的东西?)
输入
function(paramOne){
//Some code here
var variableOne = new ObjectType;
array[1] = "Some String";
instanceObj = new Something.something;
}
输出
function(ParamterOne){
//Some code here
var PartOfSomething.variableOne = new ObjectType;
sArray[1] = "Some String";
var instanceObj = new Something.something
}
【问题讨论】:
-
哪个更合适很大程度上取决于您正在执行的文本操作。
awk对于某些任务会更好,sed对于其他任务会更好。您可能最终会同时使用这两种方法。 -
你为什么不向我们展示你想要做什么?包括一些输入和预期输出。您的问题很大程度上取决于您实际尝试做什么。
-
是的,这绝对是可能的,但不是一项简单的任务,而且极端情况会让人更加沮丧。通过amazon.com/s/… 阅读和工作所花费的时间将得到很好的回报。祝你好运。
-
awk 可以比任何其他脚本语言更简洁地做到这一点,但是无论您为转换选择哪种脚本语言,为您的文件编写的语言编写解析器都将非常困难。与尝试编写工具相比,手动更改文件可能更快、更不容易出错。
-
我看到各种 cmets 对工具的适用性有些混淆。 sed 是对单行文本进行简单更改的出色工具。它有许多其他永远不应该使用的语言结构。 awk 是一种简洁、功能齐全的工具/脚本语言,适用于所有其他文本操作。 bash 是一种环境/脚本语言,用于调用工具并操作文件和进程。因此,如果您需要对多个文件中的文本进行非平凡的操作,请在 awk 中简洁地编写文本处理,在 bash 中简洁地编写文件查找/更新/调用 awk。
标签: sed awk batch-processing