使用tr或cut skews列格式化

时间:2016-03-03 22:21:15

标签: printf multiple-columns paste cut tr

我正在使用一个使用curl从配置中获取特定数组值的脚本。 Tom Fenech帮助进行了列格式化。我遇到了另一个问题,其中列格式由tr和cut命令扭曲。一个数组的命令输出包含围绕对象键的方括号。我正在使用tr或cut来删除周围的括号,他们完成了这项工作,但是列格式是偏斜的。这是我的代码:

# get the device groups
d_groups=`curl -H "X-Person-Token: $auth_token" -H "X-Person-Email: $auth_email" -k "$api_host/api/v1/device_groups"`
    grp_uuid=`echo $d_groups | jq '.[] | .uuid'`
    grp_name=`echo $d_groups | jq '.[] | .name'`
    grp_desc=`echo $d_groups | jq '.[] | .description'`
    grp_dev=`echo $d_groups | jq '.[] | .devices'`
        echo "========== DEVICES =========="
        paste <(printf 'DEVICE_GROUP_NAME\n%s\n' "$grp_name") <(printf 'DESCRIPTION\n%s\n' "$grp_desc") <(printf 'DEVICE_GROUP_UUID\n%s\n' "$grp_uuid") <(printf 'DEVICES\n%s\n' "$grp_dev" | cut -c2-39) | column -t
        echo ""
exit 0

我也尝试使用'tr -d“[]”'与使用cut相同的结果。以下是上述脚本的结果:

========== DEVICES ==========
DEVICE_GROUP_NAME                       DESCRIPTION     DEVICE_GROUP_UUID                       DEVICES
"Auto_API_GP1"                          "Auto_API_GP1"  "03be550b-3744-484e-88c5-d25e1ed865c0"
"Auto_API_GP2"                          "Auto_API_GP2"  "3a8e2ee4-3a59-4fba-aaf0-0d527d20fe13"  "1a7a2092-29bd-4178-88e9-1373ee5886de"
"Auto_API_GP3"                          "Auto_API_GP3"  "ba1ead89-34f5-4084-a9a2-8a681e83164d"
"81a3969c-1cc3-4f13-8602-afcb981d5295"
"8bbfd1a7-e048-4148-abeb-354763b6aef7"

我期待的结果:

========== DEVICES ==========
DEVICE_GROUP_NAME  DESCRIPTION     DEVICE_GROUP_UUID                       DEVICES
"Auto_API_GP1"     "Auto_API_GP1"  "03be550b-3744-484e-88c5-d25e1ed865c0"  "1a7a2092-29bd-4178-88e9-1373ee5886de"
"Auto_API_GP2"     "Auto_API_GP2"  "3a8e2ee4-3a59-4fba-aaf0-0d527d20fe13"  "81a3969c-1cc3-4f13-8602-afcb981d5295"
"Auto_API_GP3"     "Auto_API_GP3"  "ba1ead89-34f5-4084-a9a2-8a681e83164d"  "8bbfd1a7-e048-4148-abeb-354763b6aef7"

我是一名绝对的初学者,非常感谢任何见解。谢谢!

1 个答案:

答案 0 :(得分:0)

所以我停止盯着脚本足够长时间吃午餐和咖啡,并认为我上面发布的代码是删除第一个输出上的括号,但是要么输入新行,要么用新行替换括号。所以我只需更换

tr -d '[]'

tr -s '[]' '\n'

现在它按预期工作。

我谦卑地做,除了任何更正或更有效的方式。 :)