2013-02-14 139 views
2

我必須找到所有具有特定數據的記錄,這些記錄我將作爲命令行參數傳遞。如何在AWK中插入shell腳本的命令行參數?

AWK表達是這樣的(是日期以這種格式:'02/08/2013' )

貓records.txt | awk -F',''$ 4〜/ 02/08/2013/{print $ 1 $ 2}'

第4欄是日期欄。

我想要做的是提供日期作爲第一個參數並進行比較。

我試過這個,但它不工作。

cat records.txt | awk的-F '' -v awkvar = 「$ 1」 '$ 4〜/ ^「awkvar/{打印$ 1 $ 2}'

這裏的日期欄與開始」的報價,所以我告訴去尋找誰與開始記錄「+ awkvar給定日期

誰能幫我這個

編輯:?

的awk -F '' -v VAR1 = 「$ 1」「$ 4〜/^「2013/{print $ 1 $ 2}'{這個人正在工作,因爲我直接比較了2013年的記錄}

當我做這個

的awk -F '' -v VAR1 = 「$ 1」 '$ 4〜/ ^「VAR1/{打印$ 1 $ 2}',它不返回任何東西,什麼是區別。

回答

4

傳遞變量來awk,使用

awk -v awkvar=$value '{print awkvar}' 

這就是說,沒必要管cat | awk(無用的使用貓),所以最後:

awk -F, -v awkvar="$1" '$4 ~ "^\""awkvar {print $1 $2}' records.txt 
+0

是的,這是我做過什麼,我也更新了這篇文章,你認爲它應該起作用嗎?我從昨天開始一直在試這個嗎? – Dude 2013-02-14 10:18:47

+0

重試後編輯 – 2013-02-14 10:25:47

+0

當我這樣做的時候cat data.csv | awk -F','-v var1 =「$ 1」'$ 4〜/ ^「2013/{print $ 1 $ 2}',當我使用第一個參數cat進行匹配時,我得到了輸出BUTUTFs | awk -F ','-v var1 =「$ 1」'$ 4〜/ ^「var1/{print $ 1 $ 2}',它沒有給我任何東西 – Dude 2013-02-14 10:27:59