2012-12-13 59 views
2

遇到問題awk。基本上我想要做的是在文件中搜索這個特定的字符串。然後打印該行的第三個元素。使用awk的shell腳本

這裏就是我所做的:

awk -F'/' '$1=="$log"{print $3}' schedlist 

出於某種原因,這是行不通的,但如果我這樣做:

awk -F'/' '$1=="20121213-20:58:53"{print $3}' schedlist 

代碼工作。但是我需要讓用戶輸入log的名字。

回答

2

您有幾種選擇。使用一個變量(或者與-v或簡稱爲任務,但不能命名爲「日誌」,因爲這是一個awk功能):

awk -F'/' '$1 == s {print $3}' s="$log" schedlist 

報價腳本不同:

awk -F'/' '$1 == "'"$log"'" { print $3}' schedlist 
+0

非常感謝!這樣做的工作! (Y) –

3

您需要使用-v選項shell變量傳遞到awk,像這樣:

awk -v tstamp="$log" -F'/' '$1==tstamp{print $3}' schedlist 

(更新變量名稱爲在評論中提到的)tstamp(因爲log衝突與AWK內置功能log。)

+0

嗯我已經試過了,我得到這個錯誤:awk:運行時錯誤:不能命令行分配到日誌 \t類型衝突或關鍵字 \t FILENAME =「」FNR = 0 NR = 0 –

+0

+1爲正確的答案,但不幸的是你選擇了一個與內建函數名稱「log」衝突的變量名稱!只需將變量名稱更改爲tstamp或其他內容:'awk -v tstamp =「$ log」-F'/''$ 1 == tstamp {print $ 3}'schedlist' –