在awk命令中动态传递列位置,以使用常量值

时间:2016-09-09 09:38:13

标签: awk

我是脚本新手,并且需要动态传递列号并且只用所有记录的常量字符串替换该列值。

以下是我尝试的内容,但看起来像语法错误。我很难在第二部分中将Column位置的值传递给变量pos

第二部分我的意思是${$pos}} { ${$pos}="XXXX"}

Columnpos=3
while read  
do
    awk -F"|" -v OFS="|"  -v pos=$Columnpos  '${$pos}} { ${$pos}="XXXX"}  1' >  $Outile
done <"$InpFile"

尝试了其他选项,例如$[$pos]} { $[$pos]="XXXX"},但没有运气

我搜索过相同的主题,可能会发现一些相关的内容,但没有找到符合我要求的内容。

1 个答案:

答案 0 :(得分:0)

 var=2
 awk -v "col=${var}" '{print $col}'  random.file

似乎对我有用。

(编辑后续备注) 替换正是你已经做过的事情:

'{$col="XXX";print}'