Похоже, вы пытаетесь glob . grep
использует регулярные выражения .
Использование GNU Grep :
grep -n '\<if\s*(' file.txt
Это ищет if
в начале слова, за которым следует необязательный (*
) пробел (\s
) и открывающая скобка ((
).
Если вы хотите видеть только тесты на эквивалентность, вы можете сделать:
grep -n '\<if\s*(.*==' file.txt
... это добавляет проверку на ноль-ко-многим (*
) (подстановочные) символы (.
) между (
и ==
, но это не перехватит многострочные тесты, такие как:
if (status != OFF &&
volume == 11)
{
// [...]
}
Если вы хотите проверить только назначение :
grep -n '\<if\s*(.*[^!<>=+*/^-]=[^=]' test.txt
... это проверяет, что символ перед =
не является (^
) и !<>=+*/^-
([]
), и что сразу после этого символа не является =
.
Это не безупречно, но я уверен, что вы можете настроить регулярное выражение самостоятельно, чтобы удовлетворить ваши потребности.