2つのテキストファイルを比較/並べ替える必要があります。

2つのテキストファイルを比較/並べ替える必要があります。

これがまさにその場面だ。私はFile1とFile2を持っており、File3から結果を取得したいと思います。私はLinuxに初めて触れましたが、これまでsort、diff、commを使ってみました。しかし、これまでは幸運ではありませんでした。

File1.txt File2.txt > File3.txt

ファイル1.txt

RB0009  8,89
RB0010  5,67
RB0015  4,32
RB0027  6,56

ファイル2.txt

RB0009  8,89
RB0010  5,67
RB0015  4,32
RB0027  6,56
RB0033  9,78

ファイル3.txt

RB0009  700111i 8,89
RB0010  700092i 5,67    
RB0015  700148i 4,32
RB0027  700123i 6,56

助けてくれてありがとう。

ベストアンサー1

以下の私のコメントによると、質問を誤解したようです。これしなければならない期待される出力を提供します。

paste File1.txt File2.txt | awk '{print $1"\t" "700" NR "i" "\t" $2}' > File3.txt

誤解は次のとおりです。


File1.txt私が正しく理解したら、2つの入力ファイル(および)があり、2つの入力ファイルの並べ替えと結合された内容を含む出力ファイル()をFile2.txt作成しますか?File3.txt

各ファイルの最初の列が一意の識別子(たとえば、など)で、これらの識別子を一致させて2つのファイルを結合したい場合は、RB0009LinuxRB0010joinこのコマンドを使用できます。

以下は、目的のタスクを実行するコマンドの例です。

join -t $'\t' -a 1 -a 2 -o auto <(sort File1.txt) <(sort File2.txt) > File3.txt

コマンド分析:

  • join2つのファイルをリンクするために使用するコマンド。

  • -t $'\t'フィールド区切り文字としてjoinタブ文字()を使用することを示します。\t

  • -a 1 -a 2join一致するものがなくても、両方のファイルのすべての行が含まれることを示します。

  • -o autojoinタブで区切られた2つのファイルのフィールドを出力するように指示します。

  • <(sort File1.txt)プロセスの代替であり、各ファイル<(sort File2.txt)の内容をjoinjoin

  • >コマンド出力joinをにリダイレクトしますFile3.txt

結果には、File3.txt最初の列(固有の識別子)に基づいてソートされた2つの入力ファイルの組み合わせコンテンツを含める必要があります。

おすすめ記事