
以下のように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 }'