fldcmp <概要> fldcmp : フィールド単位のファイル比較を行う <書式> Usage : fldcmp [-a] [-l] [key=<n>] <file1> <file2> Version : Tue Jul 1 19:17:26 JST 2014 <説明> <file1> ファイルと <file2> ファイルをフィールド単位で比較します。 全く同じであれば出力はなく、正常終了します。 <例1> 最初に検出した異なるフィールドを次の形式で表示してエラー終了します。 レコード番号 フィールド番号 <file1>のフィールド <file2>のフィールド $ cat data1 0000000 浜地______ 50 F 9x 59 20 7x 54 0000001 鈴田______ 50 F 4x 3x 83 51 0000003 杉山______ 26 F 30 50 71 36 30 $ cat data2 0000000 浜地______ 50 F 91 59 20 76 54 0000002 鈴田______ 50 F 46 39 83 51 21 0000003 杉山______ 26 F 30 50 71 0000004 白土______ 40 M 58 71 20 10 67 $ fldcmp data1 data2 > result $ echo $? 1 $ cat result 1 5 9x 91 <例2> 異なるフィールドが複数有る場合、全ての異なるフィールドを表示します。 異なるフィールドがある場合はエラー終了します。 一方のファイルのフィールドやレコードが不足している場合は、不足してい るフィールドを "(Null)" で表します。 $ fldcmp -a data1 data2 > result $ echo $? 1 $ cat result 1 5 9x 91 1 8 7x 76 2 1 0000001 0000002 2 5 4x 46 2 6 3x 39 2 9 (Null) 21 3 8 36 (Null) 3 9 30 (Null) 4 1 (Null) 0000004 4 2 (Null) 白土______ 4 3 (Null) 40 4 4 (Null) M 4 5 (Null) 58 4 6 (Null) 71 4 7 (Null) 20 4 8 (Null) 10 4 9 (Null) 67 <例3> 表示する各行にファイル名を付けることができます。 $ fldcmp -a -l data1 data2 > result $ echo $? 1 $ cat result data1 data2 1 5 9x 91 data1 data2 1 8 7x 76 data1 data2 2 1 0000001 0000002 data1 data2 2 5 4x 46 data1 data2 2 6 3x 39 data1 data2 2 9 (Null) 21 data1 data2 3 8 36 (Null) data1 data2 3 9 30 (Null) data1 data2 4 1 (Null) 0000004 data1 data2 4 2 (Null) 白土______ data1 data2 4 3 (Null) 40 data1 data2 4 4 (Null) M data1 data2 4 5 (Null) 58 data1 data2 4 6 (Null) 71 data1 data2 4 7 (Null) 20 data1 data2 4 8 (Null) 10 data1 data2 4 9 (Null) 67 <例4> キーが一致するレコードだけ比較します。キーは昇順にソートされていなけ ればなりません。この場合、レコード番号は <file1> と <file2> の両方が 表示されます。 $ fldcmp -a -l key=1 data1 data2 > result $ echo $? 1 $ cat result data1 data2 1 5 9x 91 data1 data2 1 8 7x 76 data1 data2 3 8 36 (Null) data1 data2 3 9 30 (Null)