Рейтинг:1

Не удается избежать точки с помощью обратной косой черты. Почему?

флаг in

Итак, ниже приведены команды, которые я запускал:

$ ~/Документы: touch ball.txt bool-txt bowl.txt bull.txt
$ ~/Документы: ls . | grep b..l\.txt
мяч.txt
bool-текст
чаша.txt
бык.txt

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

qwr avatar
флаг kr
qwr
это может быть экранирование оболочки, попробуйте поместить его в строку
qwr avatar
флаг kr
qwr
также в целом синтаксический анализ ls подвержен ошибкам, но, вероятно, не имеет отношения к этому вопросу
Som Shekhar Mukherjee avatar
флаг in
Да это `ls . | grep b..l\.txt` работает, а также этот `ls . | б..л"\.".txt`. Это то, что вы имели в виду? Не могли бы вы объяснить, что здесь происходит, или указать мне соответствующие ресурсы. @qwr
Рейтинг:5
флаг kr
qwr

Я уверен, что это дубликат какого-то вопроса, но я не могу его найти. В Unix SE https://unix.stackexchange.com/questions/583428/why-do-i-have-to-quote-an-escaped-character-in-a-regular-expression-for-grep-bu

Когда вы используете grep b..l\.txt, оболочка конвертирует \. в . поэтому grep получает b..l.txt, то он интерпретирует . как любой персонаж.

Чтобы предотвратить это, самый простой способ дать grep строку, например grep 'b..l\.txt', то оболочка не ускользнет от точки. Обратите внимание, что одинарные и двойные кавычки делают разные вещи в bash, но в данном случае это не имеет значения. В качестве альтернативы используйте двойную обратную косую черту, чтобы оболочка экранировала обратную косую черту как буквальный символ, и grep правильно получит \..

Som Shekhar Mukherjee avatar
флаг in
Также можно объяснить это «также в целом синтаксический анализ ls подвержен ошибкам»? Это было бы очень полезно.
qwr avatar
флаг kr
qwr
длинная история https://unix.stackexchange.com/q/128985/171025

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.