2015-02-17 6 views
0

Я хочу искатьLinux Grep Строка поиска

$GLOBALS["\x61\156\x75\156\x61"] используя Grep но " и / не работает отлично.

grep -rl "$GLOBALS["\x61\156\x75\156\x61"]" <filename> 

$GLOBALS["\x61\156\x75\156\x61"] является вирус вредоносных программ, начиная код, много файлов затронуты. У меня есть сценарий, через который я хочу выполнить поиск файлов и удалить верхнюю строку

+0

Вы в последней версии Баш, который поддерживает ассоциативные массивы, и 'GLOBALS' ссылается на ассоциативный массив? Или вы пытаетесь выполнить поиск буквального текста, равного '$ GLOBALS [" \ x61 \ 156 \ x75 \ 156 \ x61 "]'? – bgoldst

ответ

2

Поскольку вы ищете точное совпадение, и вы не хотите, чтобы выражение интерпретировалось grep, вы должны использовать -F и одинарные кавычки, чтобы избежать переменная расширяется:

grep -Frl '$GLOBALS["\x61\156\x75\156\x61"]' <filename> 
    ^^       ^

От man grep:

-F, --fixed-строки

Интерпретировать PATTERN как список фиксированных строк, разделенных новых строк, любой из которых должен быть сопоставлен. (-F задается POSIX.)


Смотрите еще один пример использования -F вместе с одинарными кавычками:

Мы создаем файл, как это:

$ cat a 
hello 
${myarray[0]} 
bye 

И массив:

$ myarray=('hello' 'how' 'are' 'you') 

Давайте использовать одинарные кавычки и искать значение:

$ grep '${myarray[0]}' a 
$ 

Давайте использовать фиксированные строки в двойных кавычках -> он получает истолковано!

$ grep -F "${myarray[0]}" a 
hello 

Давайте использовать -F и одиночные кавычки:

$ grep -F '${myarray[0]}' a 
${myarray[0]}     #this works! 
Смежные вопросы