awk字段变量与函数参数冲突

时间:2014-10-15 15:08:36

标签: bash awk

我的函数接收变量作为参数,例如:

function do()
{
  eval "TEST=$1"
}

现在我想在同一个函数中解析一些数据:

function do()
{
   eval "TEST=$1"
   tail -n+3 file.txt | awk '$1  ~ "[0-9]$" {print "/dev/"$1}'
}

问题是awk冲突了自己的字段分隔符" $ 1"将参数传递给函数。
有没有办法解决它而不使用全局变量作为参数?

1 个答案:

答案 0 :(得分:4)

使用-v选项声明一个包含函数参数值的awk变量。

function do()
{
   TEST=$1
   tail -n+3 file.txt | awk -v test="$TEST"  '$1 ~ /[0-9]$/ {print "/dev/"test}'
}