2017-09-15 3 views
0

Ich versuche, eine Befehlsausgabe in eine einzelne Zeile zusammenzufassen, um eine Ausgabe zu drucken, um den Computernamen, den Mount-Status und den Online-Status anzuzeigen.Zusammenführen mehrzeiliger Befehlsausgabe

hier ist, wie die Ausgabe herauskommt:

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 

Wenn ich meinen Befehl ausführen, und verwenden Sie eine regelmäßige | grep -i brick Ich erhalte diese

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

, die zeigen, nicht eine der anderen Daten Ich brauche, wie "online". Ich vermute, dass dies passiert, weil grep nur nach übereinstimmenden Zeilen sucht, und wenn man sich die erste Ausgabe ansieht, ist die Zeile unter dem Feldbereich leer, da die Daten dem tatsächlichen Ende des Einhängepunkts in der nächsten Zeile folgen.

Gibt es eine Möglichkeit zum Zusammenführen dieser beiden Linien, wie ich die Daten nach dem Mount-Punkt für Status und PID post benötigen?

Ausgabe sollte wie folgt aussehen:

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

jeweils auf einer einzigen Zeile. Ich werde einen Zeitstempel vor jeder Zeile in einem Skript hinzufügen, aber das ist nur eine Vorliebe.

+0

yeah, gerade den ursprünglichen Kommentar bearbeitet. Danke, Mann. – theGlitchKing

+0

Ich glaube nicht, dass dies ein Problem ist. Die Befehlsausgabe ist nur gefaltet, um der Bildschirmbreite zu entsprechen. Können Sie auch einen Beispiel-Screenshot veröffentlichen, der die Ausgabe in der 2. Zeile zeigt, wie oben gezeigt? – Inian

+0

Wie Sie sehen von https://access.redhat.com/documentation/en-US/Red_Hat_Storage/2.0/html/Administration_Guide/sect-User_Guide- Monitor_Workload-Displaying_Volume_Status.html es postet in der gleichen Zeile richtig – Inian

Antwort

0

ich mit diesem Skript endete:

#!/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 

Das bin ich den Ausgang haben, wobei jedes Array gedruckt in dem, was mit dem Status wie einzelne Spalten aussieht.

Ich musste auch einen anderen gluster-Befehl verwenden, der die Vollversion in einer einzigen Zeile ausgibt.

0

Es gibt: ... | grep -i -A1 brick | paste -d "" - -

+0

Ich habe dies versucht, und die Ausgabe ist immer noch auf meine lange gluster Mounts gewickelt. – theGlitchKing