У меня есть пользовательский ввод, который будет использоваться в строке поиска, которая может содержать метасимвол
Например, C # или C ++
моя команда grep в функции была:
grep -E "$1|$2" test.txt
при прямой замене:
grep -E "C\+\+|testWord" test.txt
grep -E "C\#|testWord" test.txt
первый отлично поймал строки, но не второй.
Странно, но # был полностью проигнорирован.
Без прямой замены оба перехватывают что-либо с помощью c, за которым следует testWord вместо c ++ и c # соответственно
Я пытался справиться с этим с помощью sed
$temp = `echo $1 | sed 's/[\#\!\&\;\`\"\'\|\*\?\~\<\>\^\(\)\[\]\{\}\$\+\\]/\\&/g'`
но это не работает правильно.
Или есть какой-то другой способ обработки пользовательского ввода с метасимволами?
Заранее спасибо