
私は最初にawkを使用し、file1とfile 2の間の「:」で区切られた列1(例:chr10)と2(例:10000003)を比較し、awkを使用して一致する行を新しいファイルに書き込もうとします。
ファイル1:
chr10:10000003 chr10:10000005 chr10:10000015 chr10:10000017 chr10:100000202 chr10:10000033 chr10:100000380 chr10:10000043 chr10:100000465 chr10:10000052
ファイル2:
chr1:1806476:T/C:-2.12680332451125 0.835119313863368\ chr1:1806503: エアコン:-1.56871277809939 0.764924263070418\ chr10:10000003:C/T:-0.572267893158369 0.607055146639116\ chr1:1825420:C/T: 1.70588504817348 0.22407517592607\ chr1:2019496:G/C: 2.34709890656509 0.147215274051584\ chr1:2019501:C/T:-2.06157612494769 0.82769600171016\ chr10:100000202:C/A: 0.808838763489275 0.362093542746135\ chr1:2028192:G/A:-0.164564659049733 0.534780784989026\ chr1:2029672:C/A:-1.31298871130864 0.727940863740118\ chr1:2228889:C/G:-1.570481759004 0.765170049967457\ chr10:100000465:C/T:-0.701703282910107 0.629368417133545\ chr1:2306256:C/T:-1.72965371800758 0.786695642291442\
期待される出力:ファイル2と同じ形式でファイル2の行を一致させる(上記参照)
chr10:10000003:C/T:-0.572267893158369 0.607055146639116\ chr10:100000202:C/A: 0.808838763489275 0.362093542746135\ chr10:100000465:C/T:-0.701703282910107 0.629368417133545\
これまでに試したコマンドは次のとおりです。
awk -F":\r" 'NR==FNR{a[$1$2]++;next}{if($1$2 in a){print}}' file1.txt file2.txt > output.txt
awk -F":\r" 'NR==FNR{a[($1$2)]++;next}{if(($1$2) in a){print}}' file1.txt file2.txt > 出力。 txt
観察されたエラーは空の出力.txt
エラーを指摘するのに役立ちますか?
よろしくお願いします!
答え1
質問がある場合は、次のコマンドを使用できます。教えてください。
awk 'NR==FNR{a[$1];next}($1 in a){print $0}' file1 file2
答え2
これはあなたに本当に必要なものです:
$ awk -F':' 'NR==FNR{a[$1,$2]; next} ($1,$2) in a' file1 file2
chr10:10000003:C/T: -0.572267893158369 0.607055146639116\
chr10:100000202:C/A: 0.808838763489275 0.362093542746135\
chr10:100000465:C/T: -0.701703282910107 0.629368417133545\