2

Я использую следующую команду: x.txt | grep -w 'in', и я получаю ответы типа: в в ... и т. д.

Я только хочу ответ: в

Как я должен изменить команду?

1 ответ1

2

Во-первых, команда должна быть

grep -w in x.txt

Ваш текущий канал не работает, и нет необходимости cat за файлом только для его передачи. grep может читать файлы напрямую.

Во-вторых, -w делает именно то, что вы хотите. Со страницы руководства:

-w, --word-regexp

Выберите только те строки, содержащие совпадения, которые образуют целые слова. Тест состоит в том, что соответствующая подстрока должна быть либо в начале строки, либо предшествовать не состоящему из слова символу. Точно так же, он должен быть либо в конце строки, либо следовать за символом, не входящим в состав слова. Составляющие слова символы - это буквы, цифры и знак подчеркивания.

grep вернет все строки, где встречается слово; это функция grep ; Я упоминаю это, чтобы убедиться, что вы не запутались из-за этого.

Если вы просто хотите вернуть слово, как вы говорите, вы можете сделать

grep -ow in x.txt

поскольку -o возвращает только совпадающую часть, но это кажется совершенно бесполезным. Что ты на самом деле пытаешься сделать?


РЕДАКТИРОВАТЬ: явный пример:

$ cat test
word in word
within word
word word
$ grep -w in test
word in word

"внутри" не совпадает.

EDIT2: еще один пример:

$ grep '\<in\>' test 
word in word

РЕДАКТИРОВАТЬ 3: Было сказано, что проблема была со шведскими символами. Я могу воспроизвести это, даже если переменная окружения LANG установлена в sv_SE.UTF-8 . https://stackoverflow.com/questions/9260293/egrep-accented-characters-not-recognised-as-part-of-a-word предлагает использовать Perl для конкретных задач UTF-8 как простое решение.


РЕДАКТИРОВАТЬ 4: Кажется, я могу использовать sed для работы со шведскими символами:

$ cat test
word den word
avträden word
word word
$ sed -n '/\bden\b/p' test
word den word
$ sed -n '/\<den\>/p' test
word den word

Это прагматичное решение, но, надеюсь, оно подойдет для этой задачи.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .