путь grep управляет \<и \> работа

myfile.txt содержит следующее:

hello (ab)
hello ab
hello abcd

Я попробовал следующую команду:

$grep '\<ab\>' myfile.txt

\< означает начало слова и \> конец средств слова.

Таким образом, я думал, что моя команда grep эквивалентна $grep ' ab ' myfile.txt .I ожидал, что мой вывод будет

hello ab

Но это соответствует:

hello (ab)
hello ab

Как слово определяется? Действительно ли это - строка с пространством перед ним и еще одним пространством после строки?

0
задан 28 January 2017 в 19:08

2 ответа

От man grep

   The Backslash Character and Special Expressions
       The  symbols  \<  and  \>  respectively  match  the empty string at the
       beginning and end of a word.  The symbol \b matches the empty string at
       the  edge  of a word, and \B matches the empty string provided it's not
       at the edge of a word.  The symbol \w is a synonym for [_[:alnum:]] and
       \W is a synonym for [^_[:alnum:]].

, Другими словами, Word является последовательностью алфавитно-цифровых символов и символов нижнего подчеркивания, и , граница слова является пустой строкой прежде или после чего-либо еще - включая пунктуацию такой как ( и ), а также пробел. Так:

$ echo 'word-boundary' | grep -o '\<\w*\>'
word
boundary

$ echo 'word_boundary' | grep -o '\<\w*\>'
word_boundary

$ echo 'word(bound)ary' | grep -o '\<\w*\>'
word
bound
ary

Для получения дополнительной информации см. Учебное руководство Regex - Word Boundaries .

4
ответ дан 7 November 2019 в 02:15

Если Вы хотите искать точное слово, необходимо использовать опцию-w. Посмотрите ниже команды:

grep -w "hello ab" file.txt

вывод - как Вы ожидали.

hello ab

, Если Вы хотите точное имя "привет ab" затем, используют-w опцию с командой grep.

Для узнающих больше опций команды grep, отошлите статью для команды grep, записанной мной: https://screwlinux.com/how-to-use-grep-command-in-linux /

0
ответ дан 7 November 2019 в 02:15

Другие вопросы по тегам:

Похожие вопросы: