0

次のような内容の複雑なファイルを取得しました。

元のファイル

AAA
{      
  "(BBB|KKK)"
  {
    B_1 abc;
    B_2 bcd;
    B_3 efg;
    B_4 xyz;
  }

  CCC
  {
    C_1 cbc;
    C_2 dcd;
  }
}

DDD
{

  EEE
  {
    E_1 ebc;
    E_2 fcd;
  }

  "(FFF|LLL|MMM|NNN)"
  {
    F_1 gbc;
    F_2 hcd;
  }
}

GGG
{
  G_1 ibc;
}

HHH
{
  III
  {
    JJJ
    {
      J_1 jbc;
      J_2 kbc;
    }
  }
}

awk またはいくつかのツールを使用して出力を取得したい (例を挙げてください)

F_1 = gbc
G_1 = ibc
J_1 = jbc

私の質問は、一致するように正規表現パターンを定義する方法です。まず、キーワードを検索しFFF、次に最も近いブレスレット{}?の間にある内容を出力します。

F_1 gbc;
F_2 hcd;

そして、このコンテンツをさらにパイプすることができ、 I を使用して itemgrepの値を取得できます。gbcF_1

誰でもそれを行う方法を知っていますか?

4

2 に答える 2

1

以下は、第 2 レベルのネストされたグループ データのみに使用できるスクリプトです。

$ awk -v var="FFF" '$1=="}"{p=0}p{sub(/^ */,"");print};$1==var{p=1;getline}' file
F_1 gbc;
F_2 hcd;
于 2013-04-05T19:29:37.047 に答える