2016-07-21 7 views
0

私は、joinコマンドを使用してスクリプト内の複数のファイルをマージしました。ループが進むにつれてループ内のjoinコマンド

while read line; do 
    join file1 "$line" > output 
    cat output > file1 
done < list 

事は、より多くのデータがないすべてのエントリがすべてのデータファイル間で一致したため、出力ファイルから削除されています。不一致のデータを保存して出力ファイルに含めるにはどうすればよいですか?

答えて

0

man joinはあなたの友人です!鉱山はオプション-aを提案している:

-a file_number 
     In addition to the default output, produce a line for each 
     unpairable line in file file_number. 

あなたが使用する必要があります。

while read line; do 
    join -a 1 file1 "$line" > output 
    cat output > file1 
    done < list 
+0

ありがとうございました。私はフォローアップの質問をしたいと思います。一部の列にはデータがありません。私はそれらを埋めるために-e 0を使ってみましたが、どういうわけかそれはうまくいきません。これに問題があるようですか? –

+0

@DalePin:新しい質問をして、その問題を示す入力例を示してください。この質問への簡単な編集ではあまりにも違っています。データの例がなければ、何が起こるかはわかりません –