根据文件 (BASH) 的输出创建动态 header
Create a dynamic header based from the output on the file (BASH)
我有一个非常动态的文件。从某种意义上说,动态 Host 和 iSCSI_Name 可能会变短或变长。它适用于某些具有长 iqn 名称的主机,例如下面的示例,但它不适用于具有较短名称的主机。
如果有人这样做过,或者可能有一个以前的脚本创建了一个动态的 header,它会遵循给定数据的长度,反之亦然。
,我们将不胜感激。
长iqn名字
MAPPING
==================================================================================
Host Status iSCSI_Name State
==================================================================================
irefr-esz-011 online iqn.2000-01.com.vmware:irefr-esz-011-312901 active
==================================================================================
带有短 iqn 和主机名 输出如下所示。数据不到位
MAPPING
==================================================================================
Host Status iSCSI_Name State
==================================================================================
esz1 online irefr-esz-011-312901 active
==================================================================================
目前,我的脚本中有这个。
echo -e "\e[96m MAPPING\e[0m"
echo "=================================================================================="
printf '%-12s %-30s %-21s %-30s %-20s\n' Host Status iSCSI_Name State
echo "=================================================================================="
cat outputfile | column -t
echo "=================================================================================="
echo
输出文件:
irefr-esz-011 online iqn.2000-01.com.vmware:irefr-esz-011-312901 active
esz1 online irefr-esz-011-312901 active
irefr-esz-011 online iqn.2000-01.com.vmware:irefr-esz-011-312901 active
esz1 online irefr-esz-011-312901 active
irefr-esz-011 online iqn.2000-01.com.vmware:irefr-esz-011-312901 active
esz1 online irefr-esz-011-312901 active
关于什么
SEP="===================================================================================="
(echo Host Status iSCSI_Name State; cat outputfile) | column -t | \
sed "1 s/\(.*\)/$SEP\n\n$SEP/";echo $SEP
sed
选择第一行并用前导和尾随分隔符对其进行修饰。
我有一个非常动态的文件。从某种意义上说,动态 Host 和 iSCSI_Name 可能会变短或变长。它适用于某些具有长 iqn 名称的主机,例如下面的示例,但它不适用于具有较短名称的主机。
如果有人这样做过,或者可能有一个以前的脚本创建了一个动态的 header,它会遵循给定数据的长度,反之亦然。
,我们将不胜感激。长iqn名字
MAPPING
==================================================================================
Host Status iSCSI_Name State
==================================================================================
irefr-esz-011 online iqn.2000-01.com.vmware:irefr-esz-011-312901 active
==================================================================================
带有短 iqn 和主机名 输出如下所示。数据不到位
MAPPING
==================================================================================
Host Status iSCSI_Name State
==================================================================================
esz1 online irefr-esz-011-312901 active
==================================================================================
目前,我的脚本中有这个。
echo -e "\e[96m MAPPING\e[0m"
echo "=================================================================================="
printf '%-12s %-30s %-21s %-30s %-20s\n' Host Status iSCSI_Name State
echo "=================================================================================="
cat outputfile | column -t
echo "=================================================================================="
echo
输出文件:
irefr-esz-011 online iqn.2000-01.com.vmware:irefr-esz-011-312901 active
esz1 online irefr-esz-011-312901 active
irefr-esz-011 online iqn.2000-01.com.vmware:irefr-esz-011-312901 active
esz1 online irefr-esz-011-312901 active
irefr-esz-011 online iqn.2000-01.com.vmware:irefr-esz-011-312901 active
esz1 online irefr-esz-011-312901 active
关于什么
SEP="===================================================================================="
(echo Host Status iSCSI_Name State; cat outputfile) | column -t | \
sed "1 s/\(.*\)/$SEP\n\n$SEP/";echo $SEP
sed
选择第一行并用前导和尾随分隔符对其进行修饰。