내 작품에는 다음 스크립트가 있습니다.
#!/bin/bash
IFS=$(echo -en "\n\b")
echo -e "----------------------------------------------------------------------------------------------"
echo -e "| Job Name | Enabled | Client Names | Retention | Schedule | Type |"
echo -e "----------------------------------------------------------------------------------------------"
vcenter_name=$(cat /usr/local/vdr/etc/vcenterinfo.cfg | grep vcenter-hostname | cut -d '=' -f 2)
# To extract job names:
job_name=$(mccli group show --recursive=true | grep -i "/$vcenter_name/VirtualMachines" | awk -F/. '{print $(NF-2)}')
for i in $job_name
do
enabled=$(mccli group show --name=/$vcenter_name/VirtualMachines/$i | grep Enabled | awk '{print $NF}')
client_name=$(mccli group show-members --name=/vcenter-prod.happycow.local/VirtualMachines/$i | awk '{print $3}' | tail -n +4 | awk -F/ '{print $NF}')
printf "| %-27s | %7s | %7s | %10s | %7s | %12s |\n" "$i" "$enabled" "$client_name"
done
스크립트는 잘 작동하지만 일부 형식이 필요합니다. 지금 얻는 결과는 다음과 같습니다.
----------------------------------------------------------------------------------------------
| Job Name | Enabled | Client Names | Retention | Schedule | Type |
----------------------------------------------------------------------------------------------
| Backup With Space | true | Space | | | |
| Disk-Level | true | | | | |
| Linux-VM | true | | | | |
| Partial | true | | | | |
| Prod-Backup | false | VM-B
VM-D | | | |
| Same-Host | true | | | | |
| Temp | true | esxi02
ESXi-6.5
ESXi6GA | | | |
나는 그것을 다음과 같이 생각하고 싶습니다 :
----------------------------------------------------------------------------------------------
| Job Name | Enabled | Client Names | Retention | Schedule | Type |
----------------------------------------------------------------------------------------------
| Backup With Space | true | Space | | | |
| Disk-Level | true | | | | |
| Linux-VM | true | | | | |
| Partial | true | | | | |
| Prod-Backup | false | VM-B | | | |
| VM-D | | | |
| Same-Host | true | | | | |
| Temp | true | esxi02
| ESXi6.5
| ESXi6GA | | | |
정렬은 무시 됩니다 |
. 그건 제가 처리할 수 있어요. 따라서 기본적으로 job_name
단일 열 아래에 변수의 다중 값/여러 줄 출력을 원합니다 .
답변1
한 가지 방법은 다음과 같습니다 . nroff
및 을 사용합니다 tbl
. 먼저 tbl
데이터를 기반으로 전처리기 코드를 생성합니다.
저는 귀하의 유틸리티에 접근할 수 없기 때문에 다음 사항을 기반으로 귀하의 프로그램 동작을 모델링했으며 이를 귀하의 사례에 통합해야 합니다.
#!/bin/bash
NL=$'\n'
TAB=$'\t'
header=( "Job Name" "Enabled" "Client Names" "Retention" "Schedule" "Type" )
job_name=( "Backup With Space" "Disk-Level" "Linux-VM" "Partial" "Prod-Backup" "Same-Host" "Temp" )
enabled=( true true true true false true true )
client=( Space "" "" "" "VM_B${NL}VM_D" "" "esxio2${NL}ESXi-6.5${NL}ESXi6GA" )
{
echo .TS
echo allbox,center,tab\($'\t'\)\;
echo l r l l l l l.
echo "$(IFS=$'\t'; echo "${header[*]}")"
for (( i=0; i<${#enabled[@]}; i++ ))
do
var=${client[$i]//$NL/$NL$TAB$TAB}
printf '%s\t%s\t%s\t\t\t\n' "${job_name[$i]}" "${enabled[$i]}" "${var}"
done
echo .TE
} | tbl - | nroff -Tascii -ms | grep '.'
결과:
+------------------+---------+--------------+-----------+----------+------+
|Job Name | Enabled | Client Names | Retention | Schedule | Type |
+------------------+---------+--------------+-----------+----------+------+
|Backup With Space | true | Space | | | |
+------------------+---------+--------------+-----------+----------+------+
|Disk-Level | true | | | | |
+------------------+---------+--------------+-----------+----------+------+
|Linux-VM | true | | | | |
+------------------+---------+--------------+-----------+----------+------+
|Partial | true | | | | |
+------------------+---------+--------------+-----------+----------+------+
|Prod-Backup | false | VM_B | | | |
+------------------+---------+--------------+-----------+----------+------+
| | | VM_D | | | |
+------------------+---------+--------------+-----------+----------+------+
|Same-Host | true | | | | |
+------------------+---------+--------------+-----------+----------+------+
|Temp | true | esxio2 | | | |
+------------------+---------+--------------+-----------+----------+------+
| | | ESXi-6.5 | | | |
+------------------+---------+--------------+-----------+----------+------+
| | | ESXi6GA | | | |
+------------------+---------+--------------+-----------+----------+------+