Я пытаюсь найти количество строк, которые соответствуют шаблону регулярного выражения в grep, полученном как переменная.Когда я делаю grep с шаблоном непосредственно в подстановке команд, это работает.Когда я использую переменную для шаблона, это не так.
#!/bin/bash
pattern="'^\\\".*\\\"$'"
echo "pattern : $(echo $pattern)"
NB=$(grep -c -E -v -e ${pattern} abc.txt)
NB2=$(grep -v -c -E -e '^\".*\"$' abc.txt)
echo " -> $NB , $NB2"
Кроме того, что в коде, я пробовал:
NB=$(grep -c -E -v -e $(echo $pattern) abc.txt)
Нет успеха.
cmd="grep -c -E -v -e ${pattern} abc.txt"
NB="$($cmd)"
Безуспешно.
В этом примере файл abc.txt
содержит 3 строки:
"abc"
"abc
abc"
Шаблон в переменной выглядит нормально:
pattern : '^\".*\"$'
Я ожидаю, что 2 числа в NB и NB2 одинаковы.Если вы посмотрите в коде, фактический результат:
pattern : '^\".*\"$'
-> 3 , 2
Я ожидаю:
pattern : '^\".*\"$'
-> 2 , 2