我有一個文件列出了我們小型網絡上所有機器的名稱和位置,以及它們是否具有不間斷電源(UPS)。該文件具有使用命令行中的一個awk的單行格式簡單的awk腳本來查找帶有UPS的機器
alpha % in office 1 %
beta % in office 2 %UPS
gamma % in office 1 %
delta % in reception %UPS
我可以很容易地找到機器的名稱和位置 awk -F '%' '/UPS/ {print $1, $2}' $HOME/network_file
其中$ HOME是一個環境變量。
但是,我想寫一個awk腳本來添加一些額外的功能。我曾嘗試以下
#!/usr/bin/awk -f
BEGIN {
FS="%";
OFS=" ";
print "The following computers in the department have UPS \n";
print "Computer\tLocation";
}
{
if (~/UPS/) {print $1,$2;} $HOME/network_file
}
這不工作,我得到了一些錯誤信息,包括 BEGIN:找不到命令 行37:打印:找不到命令 38行:打印:找不到命令 線39:近意外的標記`}」
所需的輸出
The following computers in the department have UPS
Computer Location
beta in office 2
delta in reception
'-f'實際上是需要的; shebang使內核通過腳本文件作爲下一個參數。如果沒有'-f',Awk需要腳本的實際文本作爲命令行參數。 – 2013-03-19 11:18:41
啊。謝謝。將修改 – 2013-03-19 11:33:00
@BrianAgnew不能相信我省略了shebang。我現在遇到的問題來自if(〜/ UPS /){print $ 1,$ 2;} $ HOME/network_file,它在tilda – moadeep 2013-03-19 11:35:11