如何在bash脚本中格式化布局



嗨,我有一个文件,条目如下:

$ cat output.csv
ajhn001
sudo --- yes
ppp --- yes
samba_common --- no
Spectre_Meltdown --- yes
ajhg002
sudo --- yes
ppp --- yes
samba_common --- no
Spectre_Meltdown --- no

我需要用这种格式:

Server              Sudo        PPP         Sambacry           Specter_Meltdown
ajhn001             yes         yes         no                 yes
ajhg002             yes         yes         no                 no

但我的脚本正在打印以下内容:

$ sh format_csv.sh
Server              Sudo        PPP         Sambacry           Specter_Meltdown
ajhn001             
sudo              yes
ppp               yes
samba_common      no
Spectre_Meltdown  yes
ajhn002             
sudo              yes
ppp               yes
samba_common      no
Spectre_Meltdown  no

这是我的脚本

#!/bin/bash
fmt="%-20s%-12s%-12s%-19s%-12sn"
printf "$fmt" Server Sudo PPP Sambacry Specter_Meltdown
while read line
do
#echo $line
#echo aw
read line1 line2 line3 line4 <<< "$line"
printf "$fmt" "$line1" "$line3"
done < output.csv | column -t

有更好的方法吗?,提前谢谢。

#!/bin/bash
fmt="%-20s%-12s%-12s%-19s%-12sn"
printf "$fmt" Server Sudo PPP Sambacry Specter_Meltdown
awk 'NF == 1 { i=1; a[i]=$1 };
NF == 3 { i++; a[i] = $3; if (i==5) {printf "'$fmt'",a[1],a[2],a[3],a[4],a[5]} };
' output.csv

打印:

Server              Sudo        PPP         Sambacry           Specter_Meltdown
ajhn001             yes         yes         no                 yes
ajhg002             yes         yes         no                 no

最新更新