遇到問題awk
。基本上我想要做的是在文件中搜索這個特定的字符串。然後打印該行的第三個元素。使用awk的shell腳本
這裏就是我所做的:
awk -F'/' '$1=="$log"{print $3}' schedlist
出於某種原因,這是行不通的,但如果我這樣做:
awk -F'/' '$1=="20121213-20:58:53"{print $3}' schedlist
代碼工作。但是我需要讓用戶輸入log
的名字。
遇到問題awk
。基本上我想要做的是在文件中搜索這個特定的字符串。然後打印該行的第三個元素。使用awk的shell腳本
這裏就是我所做的:
awk -F'/' '$1=="$log"{print $3}' schedlist
出於某種原因,這是行不通的,但如果我這樣做:
awk -F'/' '$1=="20121213-20:58:53"{print $3}' schedlist
代碼工作。但是我需要讓用戶輸入log
的名字。
您有幾種選擇。使用一個變量(或者與-v
或簡稱爲任務,但不能命名爲「日誌」,因爲這是一個awk功能):
awk -F'/' '$1 == s {print $3}' s="$log" schedlist
報價腳本不同:
awk -F'/' '$1 == "'"$log"'" { print $3}' schedlist
您需要使用-v
選項shell變量傳遞到awk
,像這樣:
awk -v tstamp="$log" -F'/' '$1==tstamp{print $3}' schedlist
(更新變量名稱爲在評論中提到的)tstamp
(因爲log
衝突與AWK內置功能log
。)
嗯我已經試過了,我得到這個錯誤:awk:運行時錯誤:不能命令行分配到日誌 \t類型衝突或關鍵字 \t FILENAME =「」FNR = 0 NR = 0 –
+1爲正確的答案,但不幸的是你選擇了一個與內建函數名稱「log」衝突的變量名稱!只需將變量名稱更改爲tstamp或其他內容:'awk -v tstamp =「$ log」-F'/''$ 1 == tstamp {print $ 3}'schedlist' –
非常感謝!這樣做的工作! (Y) –