нахождение слова в строке

Я хочу найти слово abc в строке (я только хочу abc точного слова, не слова, которые содержат abc), но я получаю следующую ошибку:

echo "asjhdhahsjdajhsdabcasjdhas abc asdasdabc" | grep <abc>

удар: синтаксическая ошибка около неожиданной маркерной 'новой строки'

3
задан 1 November 2016 в 16:33

1 ответ

Вы хотите -o (покажите только совпавшую строку), и -w (шаблон соответствия в целом только слово)

$ echo "asjhdhahsjdajhsdabcasjdhas abc asdasdabc" | grep -ow abc
abc

Благодаря steeldriver для объяснения, как можно на самом деле использовать < и > вместо -w для указания на границы слова. Они должны быть \< и \>, но обратные косые черты должны быть заключены в кавычки, чтобы быть переданными grep, а также эти < символы, так как у них также есть особое значение к оболочке. Так сильная кавычка выражение как это:

echo "asjhdhahsjdajhsdabcasjdhas abc asdasdabc" | grep -o '\<abc\>'

или сходят с ума с обратными косыми чертами:

echo "asjhdhahsjdajhsdabcasjdhas abc asdasdabc" | grep -o \\\<abc\\\>
6
ответ дан 1 December 2019 в 15:23

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

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