在bash中将列表转换为字符串

在bash中将列表转换为字符串

我想用unix命令将列表转换为字符串。 X是一个变量并存储在新变量Y中。

X = ['8922','9292','3220'] 到 '8922,9292,3220'

我怎样才能做到这一点。请建议。

答案1

如果您有一个X包含 的变量['8922','9292','3220'],则可以通过执行以下操作获得Y等于'8922,9292,3220' (包括作为字符串一部分的引号)

Y=$(echo "$X" | sed "s/\[//; s/]//; s/','/,/g")

这会删除[(开头)和](结尾)。然后,它通过定位单词边界(只要有 ,)并更改(例如)…quick','brown…为 来 删除内部引号…quick,brown…

这有很多变化。例如,如果某些列表元素可能未加引号(例如,  ['8922',42,'3220']),请尝试

Y =\'$(echo "$X" | sed "s/\[//; s/]//; s/'//g")\'

这将消除全部引用$X,然后在开头和结尾重新应用引号。

相关内容