
ssh1% cat temp
sarah
saab
marrrrrrrrra
marrrrrrrtha
ssh1% grep ar*a temp
grep: No match.
Разве это не должно быть результатом?
sarah saab marrrrrra
Я пробовал использовать putty и nxclient для Windows 10.
решение1
Вы используете csh
, который видит *
и пытается расширить его какшар оболочкии терпит неудачу. То есть, csh
здесь говорится "Нет совпадения", а не grep
. В отличие отРакушки семьи Борн, csh
не передаст нерасширяемый шаблон подстановки в команду, поэтому вам придется заключить его в кавычки, чтобы csh
освободить его для grep
.
Я рекомендую здесь использовать одинарные кавычки, поскольку вы не пытаетесьинтерполироватьпеременную в строку:
% grep 'ar*a' temp
sarah
saab
marrrrrrrrra
Двойные кавычки также будут работать в этом случае, поскольку ваш шаблон не содержит $
, но я рекомендую использовать одинарные кавычки в любом случае. Стоит выработать привычку тщательно обдумывать, какие кавычки вы используете в языках, которые позволяют использовать их полувзаимозаменяемо, таких как shell, Perl и т. д. Нам здесь не нужна интерполяция строк, поэтому мы решим не использовать стиль кавычек, который ее допускает.
Кстати, вам следует также цитировать шаблоны RE под оболочками семейства Bourne. Как намекает Майк Вагнер в своем комментарии выше, потому что регулярные выражения и шаблоны globиспользуйте многие из тех же специальных символов, иногда можно написать шаблон RE, который простослучаетсятакже соответствует некоторым файлам, и поэтому неожиданно расширяется оболочкой.