用输入数据中的值替换字段

时间:2015-11-18 07:51:46

标签: bash shell unix awk

我有数据

A BC 3 CD

请注意,字段之间的空格不是常量

现在我想用另一个存储在另一个变量v中的数字替换第三个字段。 我用这种方式使用了awk:

echo "A     BC      3       CD" | awk '{$3 = $v; print}' 

输出是第三个字段被整行替换(输出错误) 是否有可能在不更改原始数据空间的情况下获得所需的输出? 谢谢你的帮助!!

1 个答案:

答案 0 :(得分:1)

试试这个:

$ v=25
$ echo "A     BC      3       CD" | gawk '{print gensub(/[^ \t]+/, v, 3)}' v="$v"
A     BC      25       CD

在您的代码中,$v正在评估awk,而bash正在评估v=0。因此$3$0取代,这是整行。

请注意,gensubgawk增强功能...