이 주제와 동일한 작업을 수행하고 싶지만 bash 버전을 사용하고 있습니다.4.1.2.
다음을 사용하여 원하는 체인을 얻을 수 있습니다.
echo ${arr[@]:(-1)} | sed "s/,$///"
그러나 단순히 표시하는 것이 아니라 배열의 인덱스 값을 수정하고 싶습니다.
편집하다
이 문자 제거를 수행하려고 할 때 루프에 있고 마지막 요소에 도달했음을 지정합니다. 따라서 배열의 두 번째 요소를 수정하고 싶습니다.
현재 다음과 같은 결과를 얻습니다.
"array" : {
"key1" : "value1",
"key2" : "value2",
"key3" : "value3",
"key4" : "value4",
"key5" : "value5",
}
마지막 쉼표를 제거하고 싶습니다.(,)key5 인덱스에서.
(이 시점에서 나는 다음 라인 레벨에 있습니다.})
편집 2
내 루프
while read line
do
if [[ $line == *"<templateIdentifier>"* ]];then
if [[ $FILENUMBER == $NUMBEROFFILES ]];then
continue
elif [[ $FILENUMBER < $NUMBEROFFILES ]];then
nameArray=$(echo "customData")
arr[$INDEXARR]='"'$nameArray'" : {'
((INDEXARR++))
continue
fi
elif [[ $line == *"</templateIdentifier>"* ]];then
if [[ $FILENUMBER < $NUMBEROFFILES ]];then
continue
elif [[ $FILENUMBER == $NUMBEROFFILES ]];then
echo ${arr[@]:(-1)} | sed "s/,$//"
arr[$INDEXARR]=' }'
continue
fi
elif [[ $line == *['<']* ]] && [[ $line != *[?'!'-]* ]] && [[ $line != *"<templateIdentifier>"* ]];then
name=$(echo $line | awk -F '<' {'print $2'} | awk -F '>' {'print $1'})
value=$(echo $line | awk -F '>' {'print $2'} | awk -F '</' {'print $1'})
arr[$INDEXARR]=$(echo -e ' \t ')'"'$name'" : "'$value'",'
((INDEXARR++))
else
continue
fi
done < $file