2つのファイルがあります。file1
6つの列があり、file2
2つの列があります。file1
一致するID変数(両方のファイルの列1)に基づいて、列6の値を列2の値に置き換えたいと思います。file2
注:file2
含まれているテーマはfile1
.soより小さいため、残念ながら次のコマンドは機能しません。
awk 'NR==FNR{tmp[$1]=$2;next}{print $0,tmp[$1]}' file2 file1
file1
良い:
HG00096 HG00096 0 0 0 -9
HG00097 HG00097 0 0 0 -9
HG00099 HG00099 0 0 0 -9
HG00100 HG00100 0 0 0 -9
HG00102 HG00102 0 0 0 -9
file2
良い:
HG00096 2
HG00097 5
HG00098 5
HG00099 3
HG00100 3
HG00101 5
HG00102 3
私が生成したいファイルは次のとおりです。
HG00096 HG00096 0 0 0 2
HG00097 HG00097 0 0 0 5
HG00099 HG00099 0 0 0 3
HG00101 HG00100 0 0 0 5
HG00102 HG00102 0 0 0 3
答え1
使用join
:
join -j 1 -o 0,1.2,1.3,1.4,1.5,2.2 file1 file2
どこ:
-j
両方のファイルの結合フィールドの定義-o
必要に応じて出力フォーマットを指定
答え2
あなたはほぼ成功しました。
awk 'NR==FNR{tmp[$1]=$2;next};{$6=tmp[$1] ; print }' file2.txt file1.txt
どこ:
$6 = tmp[$1]
フィールド 6 を置き換えます。
答え3
コメントすることはできませんが(権限はありません)、追加の質問をしたかったです。私は最初の人が要求したのと同じことをしたいと思います。また、ファイル1と一致しないファイル2の残りの行が「-9」になりたいと思います。とても感謝しています。別の質問を投稿することを嬉しく思いますが、不要な投稿を作成したくありません。
ファイル1
HG00096 HG00096 0 0 0 -9
HG00097 HG00097 0 0 0 -9
HG00098 HG00098 0 0 0 -9
HG00099 HG00099 0 0 0 -9
HG00100 HG00100 0 0 0 -9
HG00101 HG00101 0 0 0 -9
HG00102 HG00102 0 0 0 -9
ファイル2
HG00096 2
HG00097 5
HG00099 3
HG00101 5
HG00102 3
ファイル3
HG00096 HG00096 0 0 0 2
HG00097 HG00097 0 0 0 5
HG00100 HG00100 0 0 0 -9
HG00099 HG00099 0 0 0 3
HG00100 HG00100 0 0 0 -9
HG00101 HG00100 0 0 0 5
HG00102 HG00102 0 0 0 3