2017-09-15 3 views
0

출력을 인쇄하여 기계 이름, 탑재 및 '온라인'상태를 표시하기 위해 명령 출력을 한 줄로 병합하려고합니다. 출력이 나오는 방법 여기다중 행 명령 출력 병합

은 다음과 같습니다

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 내가 다른 어떤 데이터를 표시하지 않는이

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

를 얻을 수 사용 '온라인'과 같은 필요합니다. grep은 일치하는 줄만 찾고 첫 번째 출력을 보면 그 줄은 다음 줄의 마운트 지점의 실제 끝 다음에 오는 데이터 때문에 필드 섹션 아래에 비어 있습니다.

상태와 PID에 대한 데이터를 마운트 할 필요가 있으므로이 두 행을 병합하는 방법이 있습니까?

출력은 다음과 같아야합니다

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

각을 한 줄에. 스크립트의 각 줄 앞에 타임 스탬프를 추가하겠습니다.하지만 이는 단지 기본 설정입니다.

+0

예, 방금 원래의 ​​설명을 편집했습니다. 고마워. – theGlitchKing

+0

나는 이것이 문제라고 생각하지 않는다. 명령 출력은 화면 폭을 수용하기 위해 단지 접혀 있습니다. 위와 마찬가지로 두 번째 줄에 출력 결과를 보여주는 샘플 스크린 샷을 게시 할 수 있습니까? – 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 명령도 사용해야했기 때문에 한 줄에 전체 마운트를 출력합니다.

0

있습니다 : ... | grep -i -A1 brick | paste -d "" - -

+0

나는 이것을 시험해 보았고 출력물은 여전히 ​​나의 긴 gluster 마운트에 싸여있다. – theGlitchKing