
これがまさにその場面だ。私は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つのファイルを結合したい場合は、RB0009
LinuxRB0010
でjoin
このコマンドを使用できます。
以下は、目的のタスクを実行するコマンドの例です。
join -t $'\t' -a 1 -a 2 -o auto <(sort File1.txt) <(sort File2.txt) > File3.txt
コマンド分析:
join
2つのファイルをリンクするために使用するコマンド。-t $'\t'
フィールド区切り文字としてjoin
タブ文字()を使用することを示します。\t
-a 1 -a 2
join
一致するものがなくても、両方のファイルのすべての行が含まれることを示します。-o auto
join
タブで区切られた2つのファイルのフィールドを出力するように指示します。<(sort File1.txt)
プロセスの代替であり、各ファイル<(sort File2.txt)
の内容をjoin
。join
>
コマンド出力join
をにリダイレクトしますFile3.txt
。
結果には、File3.txt
最初の列(固有の識別子)に基づいてソートされた2つの入力ファイルの組み合わせコンテンツを含める必要があります。