带awk的Unix脚本
我有以下代码带awk的Unix脚本,unix,awk,Unix,Awk,我有以下代码 var="ip" awk '/$var/{ print $1 }' file 但它不起作用,我相信我不能在awk中使用$var,我尝试了 -v var=“$var”,但它也不起作用/pattern/不适用于变量,因为它正在查找文本pattern,而不是变量 相反,要获得此功能,您必须使用$0~var: awk -v var="ip" '$0 ~ var {print $1}' file 例子 或者您可以使用变量behindawk awk '$0 ~ var {print $1
var="ip"
awk '/$var/{
print $1
}' file
但它不起作用,我相信我不能在awk中使用$var,我尝试了-v var=“$var”
,但它也不起作用/pattern/
不适用于变量,因为它正在查找文本pattern
,而不是变量
相反,要获得此功能,您必须使用$0~var
:
awk -v var="ip" '$0 ~ var {print $1}' file
例子
或者您可以使用变量behind
awk
awk '$0 ~ var {print $1}' var="ip" file
您使用的是什么shell语言?对于变量($var)如何以及何时在某种类型的字符串中展开,不同的变量可能有不同的规则……但不要这样做,除非您需要在文件打开之间更改变量的初始值,因为这会使以后添加代码变得更难,例如,对BEGIN部分中的变量执行某些操作,或循环ARGV,希望只找到文件名。让初始化变量的代码出现在使用该变量的代码之后,这显然是违反直觉的。
awk '$0 ~ var {print $1}' var="ip" file