2017-04-05 17 views
0

ファイル内のパターンの完全一致を検索しようとしています。ファイルからのリストの完全一致でgrepを使用

私が試してみた:

grep -w -f IDs.txt seqs.txt > output.txt 
をしかし、私はいくつかのパターンが欠けています。

例:

IDs.txt 
denovo23 
denovo28 
denovo62 
denovo897 
denovo621 
denovo622 

seqs.txt 
denovo23 HNS.2_9729 HNS.2_20867 
denovo28 HNS.6_14948 HNS.6_148211 HNS.11_327521 
denovo62 HNS.7_468475 HNS.7_631780 
denovo897 WNA.2_58410 WNA.1_175071 
denovo621 WNA.2_20180 WNA.2_294219 
denovo622 CES.1_24310 HNS.6_26786 
denovo637 HNS.2_262147 
denovo586 HNS.1_332240 

予想される出力:

denovo23 HNS.2_9729 HNS.2_20867 
denovo28 HNS.6_14948 HNS.6_148211 HNS.11_327521 
denovo62 HNS.7_468475 HNS.7_631780 
denovo897 WNA.2_58410 WNA.1_175071 
denovo621 WNA.2_20180 WNA.2_294219 
denovo622 CES.1_24310 HNS.6_26786 

実際の出力:

denovo23 HNS.2_9729 HNS.2_20867 
denovo28 HNS.6_14948 HNS.6_148211 HNS.11_327521 
denovo62 HNS.7_468475 HNS.7_631780 
denovo897 WNA.2_58410 WNA.1_175071 

だから私は、リスト内のパターンの完全一致を行うための方法が必要ですファイル。私は、正確な一致を行うためのいくつかの方法を見てきましたが、ファイル内のリストを扱う方法は何も見つかりませんでした。

+0

は私のDebian&バッシュ4.4&GNU grepの2.27では正常に動作します - あなたはbash/grepのバージョンとあなたのOSは何ですか? –

+0

私はMac OS 10.11でBash 3.2.57とBSD grep 2.5.1を使用しています。ありがとう! –

+0

予想される出力(bash 4.2.25およびgrep 2.10 from Ubuntu 12.04)も得られます。たぶんあなたは本当にあなたの入力の何かにつまずく余りに古いツールを持っています。たとえば、IDs.txtに末尾の空白がないかどうかを確認します。 – Alfe

答えて

0

あなたgrep -w -fコマンドは、いずれかのbash 4.4とBSDのgrep 2.5.1と私のDebianのテスト&バッシュ4.4 & GNU grepの2.27またはも、私FreeBSD11 VM内で正常に動作します。
システムに何か問題があり、grepが失敗するのを見つけることができません。あなたがawkのと同じ仕事をすることができます一方

(非GNUのawkのではGNUのawkとFreeBSDとの両方のDebianでテスト):

awk 'NR==FNR{a[$1];next}$1 in a' ids.txt seq.txt 
+0

ありがとうございました! –

関連する問題