ホスト名とホストIPを含む次のファイルがあります(長いファイル、Linuxボックスあたり90〜100台のマシン)。
hosts.cluster.conf
"href" : "http://localhost:8080/api/v1/hosts/worker02.sys87.com",
"Hosts" :
"cluster_name" : "hdp",
"host_name" : "worker02.sys87.com",
"ip" : "23.67.32.65"
"href" : "http://localhost:8080/api/v1/hosts/worker03.sys87.com",
"Hosts" :
"cluster_name" : "hdp",
"host_name" : "worker03.sys87.com",
"ip" : "23.67.32.66"
"href" : "http://localhost:8080/api/v1/hosts/worker04.sys87.com",
"Hosts" :
"host_name" : "worker04.sys87.com",
"ip" : "23.67.32.67"
"href" : "http://localhost:8080/api/v1/hosts/worker05.sys87.com",
"Hosts" :
"cluster_name" : "hdp",
"host_name" : "worker05.sys87.com",
"ip" : "23.67.32.68"
すべて印刷したいです。CPU名前の行に「が含まれている場合のみクラスタ名「言葉
期待されるパフォーマンス
"host_name" : "worker02.sys87.com",
"host_name" : "worker03.sys87.com",
"host_name" : "worker05.sys87.com",
ベストアンサー1
sed '/host_name/!h;//!d;x;/cluster_name/!d;g' infile
host_name
前のバッファと一致しないすべてのラインを保存h
し、残りのd
ラインすべてを削除します。x
バッファを変更し、パターン空間に対応する行がない場合はcluster_name
削除します。それ以外の場合は、g
バッファに保存して自動的に印刷します。元の行を返します。