2017-05-08 24 views
0

我有一個與awk內的正則表達式的if語句的問題。 我試圖做的是,如果在$ NF中有一封信我會打印出來作爲傳入,如果$ NF值有字母o它將顯示傳出。條件如果語句與awk中的正則表達式Unix

下面是命令我試圖構建

awk -F"/" -v var""'{ if ($NF =~ .*i) then var="Incoming" print $8 ";" $NF ";" var elif ($NF =~ .*o) print $8 ";" $NF ";" var }' 

我總是得到錯誤

awk: cmd. line:1: { if ($NF =~ ".*i") {print $8 ";" $NF "; Incoming"} else print $8 ";" $NF "; Outgoing" fi } 
awk: cmd. line:1:   ^syntax error 
awk: cmd. line:1: { if ($NF =~ ".*i") {print $8 ";" $NF "; Incoming"} else print $8 ";" $NF "; Outgoing" fi } 
awk: cmd. line:1:              ^syntax error 

誰能幫助我?

回答

3

我不確定你想使用哪種語言的語法,但它不是awk。下面是如何寫的東西我認爲你想在awk來寫:

awk -F'/' -v OFS=';' '{if ($NF ~ /i/) var="Incoming"; else if ($NF ~ /o/) var="Outgoing"; else var=""; print $8, $NF, var}' file 

也有可能,這可能是你所需要的:

awk -F'/' -v OFS=';' '{print $8, $NF, ($NF~/i/ ? "Incoming" : "Outgoing")}' file 

如果都不是,這是你」重新尋找然後編輯你的問題,以包括簡潔,可測試的樣本輸入和預期的輸出,所以我們可以幫助你。

您可以從Arnold Robbins的第4版Effective Awk Programming一書中學習awk。