从bash脚本中的json列表末尾删除逗号

时间:2017-04-24 00:47:06

标签: json bash sed

我有一个输出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/"

1 个答案:

答案 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