Это работает для меня:
$ cat file
< ? php $XZKsyG=’as’;
$ grep 'php \$[a-zA-Z]*=.as.;' file
< ? php $XZKsyG=’as’;
Вы уверены, что содержимое файла именно то, что вы показали нам?
Попробуйте cat -A file
или od -c file
, чтобы увидеть,Файл действительно выглядит так, как вы думаете.
(Обратите внимание, что вам не нужно экранировать символ $
; это только метасимвол в конце строки. Но экранирование должно быть в порядке.)
РЕДАКТИРОВАТЬ:
Символы вокруг as
в вашем файле не являются апострофами ASCII;это символы Юникода, ПРАВАЯ ЕДИНСТВЕННАЯ МАРКА ЦИТАТЫ (0x2019).Если файл хранится в UTF-8, каждый из них представляется в виде 3-байтовой последовательности.Команда grep
работает для меня, потому что мои настройки локали "en_US.UTF-8"
таковы, что символ UTF-8 соответствует .
в регулярном выражении, даже если он имеет многобайтовое представление.Я подозреваю, что ваш языковой стандарт таков, что он будет соответствовать ...
.
Возможно, самое простое решение - отредактировать файл для использования апострофов ASCII.
Возможно, вы захотите поигратьваши настройки локали.Попробуйте команду grep
с $LANG
, установленным на "en_US.UTF-8"
.
Каков вывод команды locale
?