我想用制表符分隔字段,并在shell脚本中替换为逗号

我想用制表符分隔字段,并在shell脚本中替换为逗号,shell,unix,delimiter,comma,Shell,Unix,Delimiter,Comma,shell脚本使用逗号delimter而不是tab delimter打印输出,以列出docker服务 docker ps -a | awk -F \t '{print $1","$2","$3","$4","$5","$6","$7","$8}' 当前输出 CONTAINER ID IMAGE

shell脚本使用逗号delimter而不是tab delimter打印输出,以列出docker服务

docker ps -a | awk -F \t '{print $1","$2","$3","$4","$5","$6","$7","$8}'
当前输出

CONTAINER ID        IMAGE                              COMMAND                  CREATED             STATUS                      PORTS                          NAMES
35fe9af4efa0        thomsch98/kafdrop:latest       "/usr/local/bin/mvn-…"      3 days ago          Exited (137) 3 days ago    PAServices_kafdrop.1       x2r2tuosozdd9uzfnq7ejdi70
所需输出

CONTAINER ID,IMAGE,COMMAND,CREATED,STATUS,PORTS,NAMES
8c0e092b6815,thomsch98/kafdrop:latest,"/usr/local/bin/mvn-…",3 days ago,Up 3 days,PAServices_kafdrop.1,yen4hgju18kkfgq9bvud7e1w8

不要使用awk和docker ps的内置过滤器选项

docker ps --format "{{ .Image }},{{.ID}},{{.Command}},{{.CreatedAt }},{{.Status }},{{.Ports }},{{.Names}}"
要保留标题,请添加表:

docker ps --format "table {{ .Image }},{{.ID}},{{.Command}},{{.CreatedAt }},{{.Status }},{{.Ports }},{{.Names}}"

您可以使用以下命令:

docker ps -a |tr -s " "| sed 's/ /,/g'

tr-s将把多个空格压缩为一个空格。sed将把空格替换为逗号。

如何获取标题?这只提供没有标题的数据。您可以通过添加表来保留标题,请参见上面的修改。容器ID是单个字段,但其被拆分为两个字段。如何修复它?