2017-02-02 3 views
0

一致するものがない場合は「Not Found」の印刷方法を知っていますか?印刷出力には常にFile 1と同じ行数が含まれます。awkを使用してファイル1から3列のFile2を検索

具体的には、私は4つの列を持つ2つのファイルがあります。

ファイル1:

1 800  800  0.51 

2 801  801  0.01 

3 802  802  0.01 

4 803  803  0.23 

をファイル2:

1 800  800  0.55 

2 801  801  0.09 

3 802  802  0.88 

4 803  804  0.24 

これは何ですか私は今使用しています:

$ awk 'NR==FNR{a[$1,$2,$3];next}($1,$2,$3) in a{print $4}' file1.txt file2.txt 

これは、次のような出力を生成:しかし、私はこれを取得したい

0.55 

0.09 

0.88 

を:

0.55 

0.09 

0.88 

Not Found 

をあなたは助けてくださいもらえますか? これは混乱して表示されています。私はawkの経験がほとんどなく、混乱しています。別の問題で


ので、同じように、私は、ファイル2からのデータがファイル1へ追加したファイルを持って終了します:

1 800 800 0.51 0.55 

2 801 801 0.01 0.09 

3 802 802 0.01 0.88 

4 803 803 0.23 Not Found 

私のようにファイルを生成しようとしていました

ペーストは "\ tの" FILE1.TXTのファイル2-matches.txt>

OUTPUT.TXTしかし、私がしなければならない考慮-d:(はをfile2-matches.txtそれを呼び出すことができます)の前に、[貼り付け]コマンドを使用します100フィール以上で一致するこれを行うためのより効率的な方法がありますか?

答えて

0

else句を追加します。

$ awk 'NR==FNR{a[$1,$2,$3];next} {if (($1,$2,$3) in a) {print $4} else {print "not found"}}' f1 f2 
0.55 
0.09 
0.88 
not found 
+0

ありがとうございました!私はそれを働かせようとしましたが、構文の権利を得ることができませんでした。 – DanS

+0

私はこれを別の質問として投稿するべきですが、file2のfile1にない余分な行が残りの部分の最後に追加されるようにする方法があるのか​​どうか知りませんか? file2の列を含む1 2 3 ??ありがとうございます – DanS

+0

別途質問があります – dawg

関連する問題