Греп извлекает только цельное слово

У меня есть большой текстовый файл. Мне нужно извлечь все строки, содержащие точное слово "DUSP1". Вот пример строк:

9606    ENSP00000239223 DUSP1   BLAST
9606    ENSP00000239223 DUSP1-001 Ensembl

Я хочу получить первую строку, но не вторую.

Я попробовал несколько команд как:

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

Но никто из них, похоже, не работает. Какой вариант использовать?

Ответы

Ответ 1

Проблема, с которой вы сталкиваетесь, заключается в том, что тире (-) рассматривается как grep как разделитель слов.

Вам следует попробовать выполнить следующую команду:

grep '\sDUSP1\s' file

чтобы вокруг вас было место.

Ответ 2

Если вы хотите grep точно всего слова, вы можете использовать такие границы слов, как это:

grep '\bDUSP1\b'

Это соответствует точному слову в начале и в конце.

Ответ 3

добавив, что сказал sputpick, это может быть либо: или

grep '\sDUSP1$' file 

если DUSP1 является концом строки.