2017-08-22 3 views
0

以下の形式のデータを持つ2つのファイルがあります。 FILE1.TXT2つのファイルからの値の追加シェルスクリプト

 abc , 234 
     bcd , 457 
     xyz , 123 

FILE2.TXT

 abc , 23 
     bcd , 458 

さて、私は、次のを探しています: -

 abc , 211 (diff of file1 and file2) 
     bcd, -1 

sum of file1 values present in file2 = 691 (abc count + bcd count in file 1) 

sum of file1 values present in file2 = 481 (abc count + bcd count in file 2) 

私はgrepのを使用して知っています-fこれら2つのファイルbuをマージすることができますどのように加算と減算をするかわからない。

どのような助けも大いに訴えられます。

よろしくお願いいたします。

答えて

0

joinコマンドは、デフォルトで最初のフィールドを共通キーとして使用して2つのファイルを結合します。

次に、減算は、shell arithmetic expansionによって行うことができます。

join -t , File1.txt File2.txt | 
while IFS="$IFS," read -r key val1 val2; do 
    printf '%s , %s\n' "$key" "$((val1-val2))" 
done 
+0

遅れて申し訳ありませんが、これは機能しません。 .. join:output/test1.txt:4:はソートされていません: – user2854333

+0

@ user2854333次にファイルを最初にソートする必要があります。これは、Bashプロセス置換 'join -t、<(sort File1.txt)<(File2.txtをソートする)'とインラインで行うことができます。 – ephemient

関連する問題