2012-11-22 94 views
3

是否可以从awk文件执行另一个awk文件?使用awk文件我需要执行当前文件夹中的所有awk文件。 awk中可以做这样的操作吗?从awk文件执行另一个awk

回答

2

建议使用system函数。

5

是的,你可以。您需要使用system()函数。我假设你只想运行一次这些脚本。如果是的话,你可以将它们添加到您的包裹脚本的BEGIN块:

BEGIN { 
    system("awk -f ./script1.awk") 
    system("awk -f ./script2.awk") 
    system("awk -f ./script3.awk") 
} 

如果您有大量需要被执行的脚本,你可以使用一个for循环。请确保你的包裹脚本是不是在同一个目录中的所有其他awk脚本您希望执行,否则将被列入awk脚本的水珠......

BEGIN { 
    system("for i in *.awk; do awk -f \"$i\"; done") 
} 
+1

从一个shell调用'awk'进程,除了调用shell来运行命令之外什么意义?而不是'awk'BEGIN {system(“for我in * .awk; do awk -f \”$ i \“; done”)}''你也可以直接运行'for我in * .awk; awk - f“$ i”; done'或甚至像'ls * .awk | xargs -L1 awk -f' ... – mschilli

+2

@ sg-lecram:是的,但这是一个awk问题。 OP可能需要执行其他处理,awk是该工作的正确工具。永远不要分析'ls'。 – Steve

5

1)是。 2)不要。

awk是一个处理文本的工具。 shell(或者你的操作系统上的任何通行证)是一个调用命令和操作文件和进程的工具。

猜猜你应该使用哪一个来执行文件系统中的所有awk命令?

如果您告诉我们您的更大问题是什么以及您的操作系统,我们可以指导您。

+0

我需要做的只是调用一个awk文件并执行一些文件夹中的多个awk文件。 – suraj

+1

但是你为什么要调用awk来执行awk脚本? Awk是一个文本处理工具,而不是操作系统。难道你不能仅仅从shell(或其他操作系统等价物)中直接执行awk脚本,而是直接调用这个顶级awk脚本,而不是让shell调用awk来调用shell来调用awk? –

0

系统的一个常见用途是使用它对awk脚本创建的输出文件进行操作。它可能无法正常工作,除非您在调用系统之前先关闭(outputfile)。