意外的令牌错误:使用sh var运行时出现awk

时间:2016-02-19 16:07:05

标签: linux awk sh

我有一个包含数据格式的文件: MYFILE:

ABC7
{
0198cc998
};
FF48
{
01988899f
};

我需要使用参数id_data创建一个sh函数并返回如下数据:

#!/bin/sh
get_data()
{
    cmd="awk '/$1/{getline; getline; print}' $2"
    echo $cmd
    export result=`$cmd`
}

get_data "ABC7" "myfile"
echo $result

当我执行脚本时,我收到此错误:

awk '/ABC7/{getline; getline; print}' myfile 
# when I copy this line and I execute it manually it works
awk: cmd. line:1: Unexpected token

如何在shell变量中运行awk?

1 个答案:

答案 0 :(得分:1)

你不需要awk脚本的所有这些包装来传递参数。这有一个-v选项。

 $ var=ABC7; awk -v key="$var" -v RS="};" '$1~key{print $3}' data

 0198cc998