首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在bash脚本中格式化布局

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

Stack Overflow用户
提问于 2020-07-15 08:35:30
回答 1查看 68关注 0票数 0

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

代码语言:javascript
复制
$ 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

我需要使用以下格式:

代码语言:javascript
复制
Server              Sudo        PPP         Sambacry           Specter_Meltdown
ajhn001             yes         yes         no                 yes
ajhg002             yes         yes         no                 no

但是我的脚本正在做的是打印如下:

代码语言:javascript
复制
$ 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

这是我的脚本

代码语言:javascript
复制
#!/bin/bash
fmt="%-20s%-12s%-12s%-19s%-12s\n"
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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-15 10:34:12

代码语言:javascript
复制
#!/bin/bash

fmt="%-20s%-12s%-12s%-19s%-12s\n"
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

打印:

代码语言:javascript
复制
Server              Sudo        PPP         Sambacry           Specter_Meltdown
ajhn001             yes         yes         no                 yes
ajhg002             yes         yes         no                 no
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62905894

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档