パターンが見つかったら、中かっこブロックを削除します。

パターンが見つかったら、中かっこブロックを削除します。

{}ブロック内でパターンが見つかったら、中括弧ブロック+「名前」(2単語プレフィックス)を削除したいと思います。魔法を
少し使ってみましたが、sed効果がありませんでした。
たとえば、

  • パターン:パターンパターン-X

入力する

m m1 {  
    s s1;  
    s s2;  
    c c1 {  
        s s3;   
        c c2 {  
            PATTERN PATTERN-X  
            ...  
        }  
        s s4;
    }  
    c c3 {  
        PATTERN PATTERN-X  
        ...
        c c4 {
            s s4;
        }
    }  
}

出力

m m1 {  
    s s1;  
    s s2;  
    c c1 {  
        s s3;   
        s s4;
    }  
}

ベストアンサー1

これを試してみてください。

awk '
$0~/{/{
  if(b) {
    print b
  b=""
  }
  if(c)
    c++
}
$0~/PATTERN/ {
  b=""
  c=2
}
$0~/}/ {
  if(c)
    c--
}
!c {
  if(b)
    b=b RS
  b=b $0
}
END {
  print b
}
' infile

おすすめ記事