У меня есть пользовательский ввод, который будет использоваться в строке поиска, которая может содержать метасимвол
Например, С# или С++
моя команда 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'`
но это не работает правильно. Или есть другой способ обработки пользовательского ввода с помощью метасимволов?
заранее спасибо
read
? - person Dennis Williamson   schedule 26.01.2010grep -E "C\+\+"
, как и использование обычного grep с экранированной последовательностью без экранирования плюсов:grep "C++\|C#"
- person Dennis Williamson   schedule 26.01.2010