Ответ 1
Если вы ищете слово AAA
, за которым следует пробел в любом месте строки или в конце строки, используйте
grep -P "AAA( |$)"
Я хочу grep файл со словом, скажем, "AAA", и заканчивается пробелом или символом новой строки. Я знаю, как писать это отдельно, следующим образом, но имея проблемы с их объединением (в том смысле, что он выводит как VVV AAA
, так и AAA VVV
).
$echo -e "AAA VVV \nVVV AAA\nBBB" | grep "AAA$"
>VVV AAA
$echo -e "AAA VVV \nVVV AAA\nBBB" | grep "AAA[[:space:]]"
>AAA VVV
Я пробовал использовать []
, но безуспешно..
Если вы ищете слово AAA
, за которым следует пробел в любом месте строки или в конце строки, используйте
grep -P "AAA( |$)"
Вы можете использовать параметр -e
grep для выбора многих шаблонов:
grep -e "AAA$" -e "AAA[[:space:]]"
От человека grep:
-e PATTERN, --regexp=PATTERN
Use PATTERN as the pattern. This can be used to specify
multiple search patterns, or to protect a pattern beginning with
a hyphen (-). (-e is specified by POSIX.)
Используйте "AAA\b"
, если это приемлемо также для соответствия AAA, за которым следует любой другой символ, отличный от алфавита. Согласно страницам grep man, \b
соответствует пустой строке на краю слова.
$ echo -e "AAA VVV \nVVV AAA\nBBB" | grep "AAA\b"
AAA VVV
VVV AAA