2017-09-15 17 views
0

コマンド出力を1行にマージして、マシン名、マウント、およびオンラインステータスを出力するように出力しようとしています。私は他のデータのいずれかを示していない。この複数行コマンド出力をマージする

Brick mymachine01:/bricks/mymount/mylongcha 
Brick mymachine02:/bricks/mymount/mylongcha 

を取得し、私は私のコマンドを実行すると

Status of volume: mymount 
Gluster process        TCP Port RDMA Port Online Pid 
------------------------------------------------------------------------------ 
Brick mymachine01:/bricks/mymount/mylongcha 
achtermnt         49156  0   Y  6648 
Brick mymachine02:/bricks/mymount/mylongcha 
achtermnt         49156  0   Y  6484 

、および定期的な| grep -i brickを使用します。ここ

は出力が出てくる方法です私はオンラインのようなものが必要です。私はこれが起こっていると考えているのは、grepがマッチする行だけを探し、最初の出力を見ると、次の行のマウントポイントの実際の終わりに続くデータのために、行がフィールドセクションの下で空白になります。

ステータスとPIDのマウントポイントをポストする必要があるので、これらの2つの行をマージする方法はありますか?

出力は次のようになります。

Brick mymachine01:/bricks/mymount/mylongchaachtermnt 49156  0  Y  6448 
Brick mymachine02:/bricks/mymount/mylongcharahtermnt 49156  0  Y  6484 

各単一の行に。私はスクリプトの各行の前にタイムスタンプを追加しますが、これは単に好みです。

+0

ええ、元のコメントを編集しました。ありがとう。 – theGlitchKing

+0

私はこれが問題ではないと思います。コマンド出力は、私が推測するような画面幅に合わせて折り畳まれています。上記のように2行目の出力を示すサンプルスクリーンショットを投稿することもできます – Inian

+0

https://access.redhat.com/documentation/en-US/Red_Hat_Storage/2.0/html/Administration_Guide/sect-User_Guide- Monitor_Workload-Displaying_Volume_Status.html正しく同じ行に投稿します – Inian

答えて

0

私はこのスクリプトになってしまった:

#!/bin/bash 


mapfile -t HOST < <(gluster volume status all detail | grep brick | awk '{ print $4 }' | grep -oP "myHost\d+") 
mapfile -t MNT < <(gluster volume status all detail | grep brick | awk '{ print $4 }' | grep -oP "\/bricks.+") 
mapfile -t STATUS < <(gluster volume status all detail | grep -i online | awk '{ print $3 }') 

i=0; 
for item in "${HOST[@]}"; do 
    echo ${HOST[$i]} ${MNT[$i]} ${STATUS[$i]}; 
    let "i=i+1" 
done 

これは私のステータスを持つ個々の列のように見えるものに印刷された各配列で出力を、持っています。

また、別のglusterコマンドも使用する必要がありました。これは、フルマウントを1行に出力します。

0

あり:... | grep -i -A1 brick | paste -d "" - -

+0

私はこれを試して、出力はまだ私の長いglusterマウントにラップされます。 – theGlitchKing

関連する問題