我有一个 awk 命令,它根据第 2 列比较第 3 列。如果第 2 列(ID)相等,它会比较第 3 列(优惠券)以查看值是否不同并将它们标记为 0 或 1。
awk 'BEGIN{OFS=" ";} NR==1 { print; next } { print $0, ($2 == a) ? (($3 == b) ? "0" : "1") : "0"; a = $2; b = $3 }' testv1.txt
样本输入。
Month ID Coupon Reprice
2013-12 2 4.00
2014-01 2 4.00
2014-02 2 4.50
2014-03 2 4.50
2013-10 3 3.00
2013-11 3 3.00
2013-12 3 3.25
2014-01 3 3.25
2014-02 3 3.25
2014-03 3 3.50
这是当前的输出。
Month ID Coupon Reprice
2013-12 2 4.00 0
2014-01 2 4.00 0
2014-02 2 4.50 1
2014-03 2 4.50 0
2013-10 3 3.00 0
2013-11 3 3.00 0
2013-12 3 3.25 1
2014-01 3 3.25 0
2014-02 3 3.25 0
2014-03 3 3.50 1
我想要的是,如果 ID 相同,只让重新定价标志值 1 出现一次,就像这样(最后一个重新定价标志将是 0 而不是 1)。
Month ID Coupon Reprice
2013-12 2 4.00 0
2014-01 2 4.00 0
2014-02 2 4.50 1
2014-03 2 4.50 0
2013-10 3 3.00 0
2013-11 3 3.00 0
2013-12 3 3.25 1
2014-01 3 3.25 0
2014-02 3 3.25 0
2014-03 3 3.50 0
很抱歉发布错误。