>我有一个名为TR_VERSION的变量,它是一个版本的JSON列表,看起来像这样:
[
"1.0.1",
"1.0.2",
"1.0.3"
]
我想去掉所有 JSON 特定的字符 -[
、"
、,
和]
。以下代码有效,但合并到一个 sed 调用而不是三个会很棒。
TR_VERSION=$(echo $VERSION
| sed 's|[",]||g'
| sed 's/[//'
| sed 's/]//')
感谢您的回答!
永远不要使用 sed 来解析 json。
这是要走的路:
$ jq -r '.[]' < file.json
按预期输出
1.0.1
1.0.2
1.0.3
如果您只想删除所有"
、,
、[
和]
字符,您可以使用
TR_VERSION=$(echo "$VERSION" | sed 's/[][",]//g')
或
TR_VERSION=$(sed 's/[][",]//g' <<< "$VERSION")
[][",]
模式匹配]
、[
、"
或,
字符。
如果你真的想避免 JSON parer,仍然没有必要使用sed
.你也可以通过以下方式做到这一点
TR_VERSION=$(tr -d '[]",' <<<$VERSION)
恕我直言,它的可读性略好于sed对应物。