web-dev-qa-db-ja.com

grepを使用してWord全体を抽出する

大きなテキストファイルがあります。正確な単語「DUSP1」を含むすべての行を抽出する必要があります。ここに行の例:

9606    ENSP00000239223 DUSP1   BLAST
9606    ENSP00000239223 DUSP1-001 Ensembl

1行目は取得したいが2行目は取得したくない。

私はいくつかのコマンドを試しました:

grep -E "^DUSP1"
grep '\<DUSP1\>'
grep '^DUSP1$'
grep -w DUSP1

しかし、どれも機能していないようです。どのオプションを使用する必要がありますか?

17
Titus Pullo

あなたが直面している問題は、dash(-)がgrepによってWordの区切り文字と見なされることです。

このコマンドを試してください:

grep '\sDUSP1\s' file

wordの周りにスペースがあることを確認します。

16
Gilles Quenot

Word全体を正確にgrepしたい場合は、次のようにWordの境界を使用できます。

grep '\bDUSP1\b'

これは、最初と最後の正確なWordに一致します。

32
Phitherek_

sputpickが言ったことに加えて、それはそれであるか、または:

grep '\sDUSP1$' file 

dUSP1が行の終わりの場合。

1
indradip