Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
awk Unix中带正则表达式的条件If语句_Unix_If Statement_Awk - Fatal编程技术网

awk Unix中带正则表达式的条件If语句

awk Unix中带正则表达式的条件If语句,unix,if-statement,awk,Unix,If Statement,Awk,关于awk中带有正则表达式的if语句,我遇到了一个问题。 我想做的是,如果$NF中有一个字母i,它将打印为传入,如果$NF值中有一个字母o,它将显示传出 下面是我试图构造的命令 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: { i

关于awk中带有正则表达式的if语句,我遇到了一个问题。 我想做的是,如果$NF中有一个字母i,它将打印为传入,如果$NF值中有一个字母o,它将显示传出

下面是我试图构造的命令

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

有人能帮我吗?

我不确定你想用的是哪种语言的语法,但这不是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的《有效的awk编程》第四版中学习awk。

我不确定您要使用的是哪种语言的语法,但它不是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的第四版《有效的awk编程》一书中学习awk