我有一個awk命令打印出來的時間「200」的總數發生在列26awk中具有可變
awk '$26 ~ /200/{n++}; END {print n+0}' testfile
如何修改這個說法,所以我可以傳遞200作爲一個變量?例如如果我提前
我有一個awk命令打印出來的時間「200」的總數發生在列26awk中具有可變
awk '$26 ~ /200/{n++}; END {print n+0}' testfile
如何修改這個說法,所以我可以傳遞200作爲一個變量?例如如果我提前
awk '$26 ~ code {n++} END {print n+0}' code=200 testfile
如果在命令行上的文件名的形式的VAR與200個
感謝的值的變量$代碼= VAL它被當作一個可變 分配。變量var將被賦值val。
這是我不知道的東西,但是在'AWK編程語言'中查看它之後要注意:文件名var = val賦值是在該參數將作爲文件訪問時執行的。這種類型的賦值允許在讀取文件之前和之後更改變量。「這意味着該順序很重要。 – n0741337
@ n0741337在BEGIN部分中沒有提供正確和變量分配的方法,這可能導致混淆/錯誤。如果您需要更改文件之間的變量值,則只應使用此方法,否則'awk -v awkvar =「$ shellvar」'幾乎總是正確的方法。有關更多詳細信息,請參閱我在http://cfajohnson.com/shell/cus-faq-2.html#Q24上爲comp.unix.shell常見問題編寫的文章。 –
awk -v var="$shellVar" '$26~var{n++} END{print n}' file
你看到上面這一行如何使用shell變量在awk中。一些筆記爲您的awk單行:
print n+0
沒有必要。因爲你所定義的n
,而不是輸入文本摘下來的,你明確地做了n++
,所以它是數字型,n+0
是沒有意義的
END
前;
應當去除
我複製你的代碼關於檢查200部分。但風險很大。如果$ 26只是一個數字,你可以考慮使用在這種情況下使用正則表達式1*$26 == 200
或$26 == "200"
可能會導致錯誤的結果,想想你的$ 26值:20200
如果'code'的值爲' 20'和數字'200'出現在字段26中,如果匹配或不匹配?你是在尋找場地26的整體還是隻有一部分? –