Отобразите все «if заявления» в файле, используя «grep» - PullRequest
0 голосов
/ 08 марта 2012

У меня есть файл "file.txt", который содержит несколько if -статемий, как показано ниже:

if ( x == y)

if (x == (y + 1))

and so on.

Как вывести на экран все if заявления, присутствующие в файле, используя grep.

Я пытался: grep -R "if ( * == * )" *, но он не показывает требуемый результат.

1 Ответ

1 голос
/ 08 марта 2012

Похоже, вы пытаетесь 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

... это проверяет, что символ перед = не является (^) и !<>=+*/^- ([]), и что сразу после этого символа не является =.

Это не безупречно, но я уверен, что вы можете настроить регулярное выражение самостоятельно, чтобы удовлетворить ваши потребности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...