1

我正在使用jq从 JSON 文件中读取一些数据。

after=`cat somefile.json | jq '.after[]'`

返回如下内容:

"some value" "another value" "something else"

基本上是引用字符串的列表。我现在需要将这些字符串转换成一个字符串,格式如下

"some value; another value; something else;"

我已经尝试了很多 for 循环的组合来尝试使其正常工作,但没有任何效果。

任何人都知道如何做到这一点?干杯!

4

3 回答 3

2

使用sed

sed -e 's/" /; /g; s/ "/ /g; s/"$/;"/' <<< '"some value" "another value" "something else"'

输出:

"some value; another value; something else;"

使用 seds命令替换期望值

于 2013-11-29T00:55:39.490 回答
1

谢谢大家!实际上,我决定深入研究 jq 文档,看看我是否可以简单地利用它来做我想做的事。

after=`cat somefile.json | jq -c -r '.after[] + "; "'` | tr -d '\n'

这最终工作得很好。不过感谢 sed 版本!总是很高兴看到另一个可行的解决方案。

于 2013-11-29T01:50:14.347 回答
0

假设.after[]返回您描述的字符串列表,您可以完全使用 jq 执行此操作,使用join将它们格式化如下:

[ .after[] ] | join("; ") + ";"
于 2017-08-02T07:40:38.100 回答