2017-11-24 2 views
0

例:if文に1つの文しか含まれていないif文に対して、ディレクトリを再帰的に検索するにはどうすればよいですか?

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

私はgrepの正規表現と改行をしようとしてきたが、私の結論はgrepのは、一度に1本のラインを見てすることができるだけであるということですので、私が使用してどのようなツールが必要なのかこれらを検索しますか?

おかげ

+0

を私は[ '' if'を見つけ、その後、パターン間の検索sed' 'と思うだろう{] 'と' [}] 'となります。 'sed'は' n'と 'N'コマンドを提供して、次の行をパターンスペースに読み書きします。 –

答えて

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; 
} 
+0

パーフェクト、ありがとう。そして、いったん私はその出発点を他のシナリオ(if/elseなど)に適合させるのが簡単です。 – Codemonkey

関連する問題