2014-09-26 27 views
1

我需要在awk中執行絕對值計算。awk:自動調用文件中的函數

但絕對值不內置awk,所以很多我awk命令是這樣的:

awk 'function abs(x){return ((x < 0.0) ? -x : x)} { ...calls to "abs" .... }' file 

是否有存儲用戶定義的awk功能的文件,並有awk自動加載的方式這些函數何時被調用?

類似於設置awk「包含」路徑或用戶配置文件,與對bash和其他程序執行的方式非常相似。

+5

HTTPS

$ cat function_lib.awk function abs(x){ return ((x < 0.0) ? -x : x) } 

通話功能:// WWW .gnu.org /軟件/ GAWK /手動/html_node/Include-Files.html#Include-Files – Basilevs 2014-09-26 15:31:12

+0

在鏈接@Basilevs發佈狀態時,可以使用「@include」文件「'導入文件。 – 2014-09-26 16:26:23

+1

我想你也可以將'awk'別名爲'awk -i funcs.awk' – 2014-09-26 16:28:20

回答

2

您可以使用@include "file"導入文件。

例如創建一個名爲func_lib文件:

function abs(x){ 
    return ((x < 0.0) ? -x : x) 
} 

然後用awk它包含:

awk '@include "func_lib"; { ...calls to "abs" .... }' file 
+0

但是我必須每次都這樣做......我想馬克Setchell的評論是最好的 – cmo 2014-09-26 20:02:25

+1

對於您的具體使用,也許它是最好的。這取決於你想如何調用awk。只需要將其包含在需要外部函數的特定'awk'程序中就可以了。另外,如果使用'awk'腳本,在頂部執行所有'@ include's而不是將''''''''''''''傳遞給'-i'命令行參數似乎更實際。 – 2014-09-26 20:22:56

1

也可以嘗試這樣

$ awk -f function_lib.awk --source 'BEGIN{ print abs(-1)}'