パターンに基づいて特定のテキスト領域を表示するためのGrepに似たツール

パターンに基づいて特定のテキスト領域を表示するためのGrepに似たツール

私はしばしば次のようなテキストメッセージを投稿します。

pose: 
  - 
    position: 
      x: 0.0
      y: 0.0
      z: 0.0
    orientation: 
      x: 0.0
      y: 0.0
      z: 0.0
      w: 1.0
  - 
    position: 
      x: 0.350104982508
      y: 0.729534356813
      z: -3.10228873344e-06
    orientation: 
      x: -9.84128404362e-07
      y: -1.996909502e-06
      z: -0.447019362477
      w: 0.894524281149
  - 
    position: 
      x: 0.455011
      y: -1.59228
      z: 0.0
    orientation: 
      x: 0.0
      y: 0.0
      z: 0.0
      w: 1.0

私はこれをgrepや他の同様のツールにパイプして、「pose:」の後の12行目で始まり、「pose:」の次の20行目で終わる領域を表示したいと思います。 grepのデフォルトコマンドを使用すると、「pose:」の前後にn行だけを表示できます。私の場合は、次のサブメッセージを表示したいと思います。

position: 
  x: 0.350104982508
  y: 0.729534356813
  z: -3.10228873344e-06
orientation: 
  x: -9.84128404362e-07
  y: -1.996909502e-06
  z: -0.447019362477
  w: 0.894524281149

これを行うコマンドラインツールはありますか?

ベストアンサー1

 awk '/^pose:/{s=NR+11} (NR>s && NR<s+10){print $0}'

行がpose:、で始まる場合sに設定しますNR+11。行NRより大きいsか小さい場合はs+10印刷されます。

おすすめ記事