コマンドで特定の単語の後の情報を解析する方法

コマンドで特定の単語の後の情報を解析する方法

コマンドから情報を取得し、gpstate -s削除するデバッグ情報を印刷します。特に保存したい行が一つありますが、まさにこのMaster Host行です。環境変数として保存できるように、デフォルトホストの値(HostNameに変更)が必要です。

20210805:00:02:22:025334 gpstate:HostName:gpadmin-[INFO]:-Obtaining Segment details from master...
20210805:00:02:22:025334 gpstate:HostName:gpadmin-[INFO]:-Gathering data from segments...
20210805:00:02:23:025334 gpstate:HostName:gpadmin-[INFO]:-----------------------------------------------------
20210805:00:02:23:025334 gpstate:HostName:gpadmin-[INFO]:--Master Configuration & Status
20210805:00:02:23:025334 gpstate:HostName:gpadmin-[INFO]:-----------------------------------------------------
20210805:00:02:23:025334 gpstate:HostName:gpadmin-[INFO]:-   Master host                    = HostName
20210805:00:02:23:025334 gpstate:HostName:gpadmin-[INFO]:-   Master postgres process ID     = 5000
20210805:00:02:23:025334 gpstate:HostName:gpadmin-[INFO]:-   Master data directory          = /data/master/gpseg-1

マスターホストからすべてのコンテンツをインポートして追加のコンテンツを試しましたが、gpstate -s | sed -n -e 's/^.*Master\sHost //p'空の結果が出ました。ホスト名を取得するには、cutafterコマンドを使用する予定です。sed

ベストアンサー1

sedスクリプトに関してMaster\sHost失敗する可能性がある理由は2つあります。

  1. 入力はhost小文字で始まるため、h一致しHostません。
  2. \sGNU sedでのみサポートされている略語で、[[:space:]]POSIX sedまたは[ \t]すべてのsedで使用できます。

あなたはそれを使用することができますawk

$ gpstate -s | awk -F'= ' '/Master host/ { print $2 }' 
HostName

そしてsed

$ gpstate -s | sed -n '/Master host/s/.*= //p'
HostName

おすすめ記事