我有一个输出json的bash脚本,但显然,我在列表项的末尾没有逗号,如下所示。如何让列表中的最后一项在最后没有逗号,同时将其保留在所有其他项目上?
理想情况下,我想在循环中执行此操作,但我可以在创建后将其剥离。
这是脚本的一部分。
#Print out a list of hosts in groups
for group in $grouplist; do
printf '\t"%s": {\n' $group
echo -ne '\t\t"hosts": ['
for host in `grep $group $results|awk '{print $1}'`; do
printf '"%s", ' "$host"
done
echo ']'
echo -e '\t},'
done
它输出一个像这样结束的json列表。
},
}
我在一个函数中有这个,所以我搞乱了各种各样的sed东西来清理它,但是没有设法把它拉下来。
function | sed "s/something/another/"
答案 0 :(得分:2)
也许你可以得到$grouplist
的len并跟踪循环计数,然后用if和if回声;然后;否则,像这样:
len=$(wc -w <<< $grouplist)
i=0
for group in $grouplist; do
let i++
printf '\t"%s": {\n' $group
echo -ne '\t\t"hosts": ['
for host in `grep $group $results|awk '{print $1}'`; do
printf '"%s", ' "$host"
done
echo ']'
if (( $i < $len )); then
echo -e '\t},'
else
echo -e '\t}'
fi
done