数値_ID、状態、説明を含むファイルが2つあります。数字に基づいてこれら2つのファイルを結合したいと思います。
number_123, status1, status2
私のファイル1:
number_123,this car is under maintenance
number_345,this car checked is done
number_356,this car is under main
私のファイル2:
number_123,hold
number_345,done
両方のファイルの既存の数字を次のように連結します。
number_123,hold,this car is under maintenance
number_345,done,this car checked is done
共通番号を見つけるためにcomm file1 file2を使用しましたが、ファイルは次のようになります。
number_123,this car is under maintenance
number_123,hold
number_345,this car checked is done
number_345,done
1行で印刷するにはどうすればよいですか?
number_123,hold,this car is under maintenance
number_345,done,this car checked is done
答え1
このcomm
ユーティリティは、ファイル間の行全体を比較するために使用されます。あなたが望むのは、特定の分野に参加することだけです。
$ join -t, file2 file1
number_123,hold,this car is under maintenance
number_345,done,this car checked is done
これは、両方のファイルが結合フィールド(各ファイルで最初にカンマで区切られた列)に基づいてソートされていると仮定します。
ファイルがソートされていない場合は、次のように事前ソートできます。
sort -t, -k1,1 -o file1 file1
sort -t, -k1,1 -o file2 file2
でksh93
、または「すぐに」並べ替えることもできますbash
。zsh
join -t, <( sort -t, -k1,1 file2 ) <( sort -t, -k1,1 file1 )