带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