Использование grep для поиска строки, в которой есть точка
Я пытаюсь найти строку 0.49 (с точкой) с помощью команды
grep -r "0.49" *
но что происходит, что я также получаю нежелательные результаты, которые содержат строку, такую как 0449,0949 etc,. Дело в том, что linux рассматривает точку(.) как любой персонаж и вынося все результаты. Но я хочу получить результат только для "0.49".
8 ответов:
grepиспользует регулярные выражения;.означает "любой символ" в regex. Если вам нужна литеральная строка, используйтеgrep -F,fgrep, или побег.to\..
grep -F -r '0.49' *обрабатывает 0.49 как "фиксированную" строку вместо регулярного выражения. Это делает.теряют свой особый смысл.
вам нужно бежать
.Как"0\.49".A
.является регулярным метасимволом, соответствующим любому символу (кроме новой строки). Чтобы соответствовать буквальному периоду, вам нужно его избежать.
здесь так много ответов, предлагающих избежать точки с
\.но я сталкивался с этой проблемой снова и снова:\.дает мне тот же результат, что и.однако эти два выражения работают для меня:
$ grep -r 0\.49 *и:
$ grep -r 0[.]49 *я использую" нормальную " оболочку bash на Ubuntu и Archlinux.
Comments