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

i want to separate field with tab delimiter and replace with comma in shell script

shell 编写脚本以使用逗号分隔符而不是制表符分隔符打印输出以列出 docker 服务

docker ps -a | awk -F \t '{print ","","","","","","","}'

当前输出

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}}"

要保留 headers,请添加 table:

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

您可以使用以下命令:

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

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