【发布时间】:2019-04-23 01:27:58
【问题描述】:
我有包含两个价格列的 CSV 数据。如果 $4 列中存在一个值,我想将它复制到同一行的 $3 列中。如果 $4 为空,则 $3 应保持原样。
这些都不起作用:
awk -F',' '{ if (length($4) == 0) $3=$4 }'
awk -F',' '{ if(!length($4) == 0 ) print $4 }'
这将输出带有示例表的每一行
awk -F',' '{ if(!length($4) == 0 ) print $0 }' inputfile
这不会在示例表中输出任何内容
awk -F',' '{ if(length($4) == 0 ) print $3 }' inputfile
我已经清理了我的两个输入文件,修复了标题行,并使用 sed、awk、sort 和 join 将它们连接起来。现在我剩下的是一个 CSV,它看起来像这样:
itemnumber,available,regprice,mapprice
00061,9,19.30,
00061030,31,2.87,3.19
00062,9,15.44,
00062410,2,3.59,3.99
00064,9,15.44,
00066850,29,2.87,3.99
00066871,49,4.19,5.99
00066878,3,5.63,7.99
如果同一行中的 $4 列有值,我需要覆盖 $3 列。最终结果是:
itemnumber,available,regprice,mapprice
00061,9,19.30,
00061030,31,3.19,3.19
00062,9,15.44,
00062410,2,3.99,3.99
00064,9,15.44,
00066850,29,3.99,3.99
00066871,49,5.99,5.99
00066878,3,7.99,7.99
【问题讨论】: