需要帮助将三个 sed 呼叫合并为一个



>我有一个名为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对应物。

最新更新