2行の間の文字列を切り捨てる

2行の間の文字列を切り捨てる

私は場所と側面に基づいてウィンドウを管理するためにLinuxでスクリプトを書いています。xwininfo -id ID -all特に最大化および全画面表示の場合、ウィンドウ情報を表示するために使用すると、次の結果が返されます。

xwininfo: Window id: 0x2200001 "Newest 'bash' Questions - Unix & Linux Stack Exchange - Google Chrome"

    [......]

  Window manager hints:
      Client accepts input or input focus: Yes
      Initial state is Normal State
      Displayed on desktop 0
      Window type:
          Normal
      Window state:
          Maximized Horz
          Maximized Vert
          Fullscreen
          Focused
      Process id: 63354 on host antonio-ThinkPad

  Normal window size hints:
      Program supplied minimum size: 121 by 127
   
    [.......]

たとえば、個々の行を失うことなく、とWindow manager hints:Normal window size hints排他)の間のすべてを抽出し、名前付き変数に保存したいと思います。$info私はそれを試しましたが、awk成功sedしませんでした。私はプロのプログラマーではないので、事前に感謝します:)

提案された予想出力:

  Client accepts input or input focus: Yes
  Initial state is Normal State
  Displayed on desktop 0
  Window type:
      Normal
  Window state:
      Maximized Horz
      Maximized Vert
      Fullscreen
      Focused

いいえ、他の場所では表示されません。

ベストアンサー1

これにより、間にある2行を除いて2行が印刷されます。

awk '/Window manager hints:/{flag=1; next} /Normal window size hints/{flag=0} flag' file.txt

出力:

     Displayed on desktop 0
     Window type:
         Normal
     Window state:
         Maximized Horz
         Maximized Vert
[.......]

これには2行が含まれます。

awk '/Window manager hints:/,/Normal window size hints/' file.txt

出力:

 Window manager hints:
     Displayed on desktop 0
     Window type:
         Normal
 Window state:
     Maximized Horz
     Maximized Vert
[.......]

上記のコマンドはファイルに対して実行されますが、次のコマンドを介してパイプすることもできます。

xwininfo -id ID -all | awk '/Window manager hints:/{flag=1; next} /Normal window size hints/{flag=0} flag'

または

xwininfo -id ID -all | '/Window manager hints:/,/Normal window size hints/'

おすすめ記事