2つのテーブルを比較し、その列に対して操作を実行するシェルスクリプト

2つのテーブルを比較し、その列に対して操作を実行するシェルスクリプト

以下のように2つのテーブルがあります。

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

以下は、値の違いを持つテーブルを作成する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 }'

おすすめ記事