【发布时间】:2017-05-02 18:39:08
【问题描述】:
我的文件 a.txt 的第一行包含以下内容,并且字段用 (,) 分隔
ab,b1,c,d,5.986627e738,e,5.986627e738
cd,g2,h,i,7.3423542344,j,7.3423542344
ef,l3,m,n,9.3124234323,o,9.3124234323
当我发出以下命令时
awk -F"," 'NR>-1{OFS=",";gsub($5,$5+10);OFS=",";print }' a.txt
正在打印
ab,b1,c,d,inf,e,inf
cd,g2,h,i,17.3424,j,17.3424
ef,l3,m,n,19.3124,o,19.3124
这里有两个问题
我要求 awk 仅将 10 添加到第 5 列,但由于重复条目,它也已添加到第 7 列
它正在对数字进行四舍五入,我需要按原样打印小数
我该如何解决这个问题?
【问题讨论】:
-
你为什么指定
NR>-1? -
为什么要设置两次OFS?
-
是数字
5.986627e738使用科学记数法或拼写错误,e不应该在那里? -
@SatyanveshMuppaneni 您应该添加预期输出以清除一些疑问,例如在第五列中使用
e、NR>-1等...如果第五列总是有.,awk 'BEGIN {FS=OFS=","} {split($5,a,"."); a[1]+=10; $5=a[1]"."a[2]}1' input_file可能会起作用 -
@Kent 是的,只增加 int ... OP 的值类似于
5.986627e738... 随着您的回答,它会转换为10.0000000000因此 cmets 要求 OP 澄清