2012-11-22 135 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)。