我有数据
A BC 3 CD
请注意,字段之间的空格不是常量
现在我想用另一个存储在另一个变量v中的数字替换第三个字段。 我用这种方式使用了awk:
echo "A BC 3 CD" | awk '{$3 = $v; print}'
输出是第三个字段被整行替换(输出错误) 是否有可能在不更改原始数据空间的情况下获得所需的输出? 谢谢你的帮助!!
答案 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
取代,这是整行。
请注意,gensub
是gawk
增强功能...