2017-04-24 107 views
0

我有一個輸出json的bash腳本,但顯然,我不能在列表項的末尾添加一個逗號,如下所示。如何獲得列表中的最後一個項目,以便最終不會留下逗號,同時將其保留在所有其他項目上?從bash腳本的json列表末尾刪除逗號

理想情況下,我想在循環中執行此操作,但是我可以在創建後將其剝離。

這是腳本的一部分。

#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

請遵守[MCVE](https://stackoverflow.com/help/mcve)中給出的說明。它會幫助你獲得更好的答案 – Thor

回答

2

也許你能得到的$grouplist的LEN和跟蹤循環計數,然後如果呼應;然後,否則,像這樣:

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