Например:

if ($bar) {
    $foo = 1;
}

Я пробовал использовать регулярные выражения и символы новой строки в grep, но я пришел к выводу, что grep может просматривать только одну строку за раз, поэтому какой инструмент мне нужно использовать для их поиска?

Благодарность

0
Codemonkey 24 Ноя 2017 в 12:20

1 ответ

Лучший ответ

Вы можете попробовать это sed:

sed -n '/^\s*if\s*(.*)/{N;/\s*{$/N; N;/}\s*$/p}' file

Тест:

$ cat file
if ($bar) {
    $foo = 1;
}

if ($bar) {
    $foo = 1;
    $foo = 2;
}

if ($foo)
{
    $foo = 1;
}
if ($foo)
{
    $foo = 1;
    $foo = 2;
}

$ sed -n '/^\s*if\s*(.*)/{N;/\s*{$/N; N;/}\s*$/p}' file
if ($bar) {
    $foo = 1;
}
if ($foo)
{
    $foo = 1;
}
1
sat 24 Ноя 2017 в 09:30