0

我有一个使用几乎相同代码的脚本,如下所示:

almsource=`awk -F# '{print $5}' test.csv`
for var in ${almsource[@]}
do
    ...
done

almSev=`awk -F# '{print $3}' test.csv`
for var in ${almSev[@]}
do
    ...
done

...由于大多数代码都是相同的,除了awk -F# '{print $3}'. 我想写一个函数,因为提取 awk -F# '{print $3}' as varaible. Below is my function, but it seems awk -F# '{print ${$varNum}}' 中的字段值不正确。

getFieldGrp()
{
#getFieldGrp <fieldVar> 
varNum=$1
almfield=`awk -F# '{print ${$varNum}}' test.csv`
...
done

}

有人可以帮我吗?

非常感谢!

4

2 回答 2

2

您需要首先将 shell 变量传递给awk并使用数组来保存所有值。试试这个:

array=($(awk -F "#" -v num="$1" '{ print $num }' test.csv))
于 2012-11-22T08:05:45.287 回答
2

不需要 awk

getFieldGrp() { cut -d '#' -f $1 test.csv; }

for word in $(getFieldGrp 5); do ...
于 2012-11-22T11:59:27.663 回答