使用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
我做错了什么?
答案 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
相同,这是您在尝试中看到的整行。