awk变量传递给文件中的字段

时间:2017-05-28 09:59:02

标签: awk

使用awk变量插入文件的字段2时出现问题。这是我的数据:

data='AAA||CCC|DDD|EEE|FFF'  
ds='BBB'

我想在我的文件的字段2中插入变量ds的值。所以我写了一些测试代码来查看awk中的行为:

$ echo "$data" | awk -F'|' -v tmp="$ds" '{print $1}'  
AAA <== that works ... now I try to print my variable  

$ echo "$data" | awk -F'|' -v tmp="$ds" '{print $1 $tmp}'  
AAAAAA||CCC|DDD|EEE|FFF <== output but I was expecting AAA|BBB  

我也试过这个:

$ echo "$data" | awk -F'|' -v tmp="$ds" '{print $tmp}'  
AAA||CCC|DDD|EEE|FFF <== output but I was expecting BBB  

我做错了什么?

1 个答案:

答案 0 :(得分:0)

在awk中,你不要像在bash中那样将$放在变量前面来获取它的值。只需输入变量名称:

$ echo "$data" | awk -F'|' -v tmp="$ds" '{print tmp}'  
BBB

$仅用于获取字段的值(如$1$2等)。放$var时,该字段基于var的数值。如果var的值是7,例如,$var是第7个字段的值。如果var为0或某些非数字值,则$var$0相同,这是您在尝试中看到的整行。