用于比较两个表并对其列执行操作的 Shell 脚本

用于比较两个表并对其列执行操作的 Shell 脚本

我有两个表,如下所示:

表格1

TABLE_NAME                            COUNT
------------------------------ ------------
AIN_EDP_SCRIPT                           33
AMA_CALLTYPE_LOOKUP                      24
APPLICATION_INFO                          0
ARS_PROFILE                               0
AUTHCODE                                  0
AUTHCODE_GROUP                            0
AUTHCODE_INFO                             0
AUTHO_RIZATION                            1
AUTO_RECALL_PROFILE                       0
AUTO_RECALL_PROFILE_DATA                  0
BG_REGISTERED_USER                        0
BILLING_INFO_PROFILE                     18

表2

TABLE_NAME                            COUNT
------------------------------ ------------
AIN_EDP_SCRIPT                           23
AMA_CALLTYPE_LOOKUP                      24
APPLICATION_INFO                          0
ARS_PROFILE                               0
AUTHCODE                                  23
AUTHCODE_GROUP                            0
AUTHCODE_INFO                             0
AUTHO_RIZATION                            1
AUTO_RECALL_PROFILE                       0
AUTO_RECALL_PROFILE_DATA                  34
BG_REGISTERED_USER                        0
BILLING_INFO_PROFILE                     18

我想从表 1 的第 2 列中减去表 2 的第 2 列,并在下表 3 中输出结果,例如:

表3

TABLE_NAME (This remain same)        COUNT(Table2-Table1)
------------------------------ ------------
AIN_EDP_SCRIPT                           33
AMA_CALLTYPE_LOOKUP                      24
APPLICATION_INFO                          0
ARS_PROFILE                               0
AUTHCODE                                  0
AUTHCODE_GROUP                            0
AUTHCODE_INFO                             0
AUTHO_RIZATION                            1
AUTO_RECALL_PROFILE                       0
AUTO_RECALL_PROFILE_DATA                  0
BG_REGISTERED_USER                        0
BILLING_INFO_PROFILE                     18

你能告诉我如何在 bash 中做到这一点吗?

答案1

以下是创建具有值差异的表的一种方法:

paste table1 table2 | awk 'NR<=2 { print $1, $2 ; next } { print $1, $4-$2 }'

(注意:如果您希望它们的格式与原始文件一样,请使用printf而不是print使用适当的格式说明符。)

编辑:这是上述命令的变体(使用条件运算符),它使用printf

paste table1 table2 | awk '{ printf "%-30s %12s\n", $1, NR<=2 ? $2 : $4-$2 }'

相关内容