将引用的字符串列表转换为特定格式

时间:2013-11-29 00:41:57

标签: bash jq

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

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

返回类似这样的内容:

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

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

的字符串
"some value; another value; something else;"

我已经尝试了很多for循环的组合来尝试使其工作,但没有什么可行的。

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

3 个答案:

答案 0 :(得分:2)

使用sed

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

<强>输出:

"some value; another value; something else;"

使用sed s命令替换欲望值

答案 1 :(得分:1)

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

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

这最终运作良好。谢谢你的sed版本!总是很高兴看到另一个有效的解决方案。

答案 2 :(得分:0)

假设// In the main thread: NSMenu *menu = [[NSMenu alloc] initWithTitle:@"Menu"]; NSMenuItem* placeholder = [NSMenuItem alloc] initWithTitle:@"Please wait" action:NULL keyEquivalent:@""]; [menu addItem:placeholder]; [menu popUpMenuPositioningItem:[menu itemAtIndex:0] atLocation:CGPointMake(500, 500) inView:nil]; dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{ NSArray<NSMenuItem*>* items = [self prepareAdditionalItems]; dispatch_sync(dispatch_get_main_queue(), ^{ [menu removeItem:placeholder]; for (NSMenuItem* item in items) { [menu addItem:item]; }); }); }); 返回您描述的字符串列表,您可以使用 join 完全使用jq完成此操作,格式如下:

.after[]