2017-05-08 91 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。