jq将两个文本字符串转换为单独的json对象

jq将两个文本字符串转换为单独的json对象,json,bash,sh,text-processing,jq,Json,Bash,Sh,Text Processing,Jq,如何将这两个文本字符串转换为单独的json对象 文本字符串: start process: Mon May 15 03:14:09 UTC 2017 logfilename: log_download_2017 Json输出: { "start process": "Mon May 15 03:14:09 UTC 2017", } { "logfilename": "log_download_2017", } Shell脚本: logfilename="log_download_2017"

如何将这两个文本字符串转换为单独的json对象

文本字符串:

start process: Mon May 15 03:14:09 UTC 2017
logfilename: log_download_2017
Json输出:

{
"start process": "Mon May 15 03:14:09 UTC 2017",
}
{
"logfilename": "log_download_2017",
}
Shell脚本:

logfilename="log_download_2017"
echo "start process: $(date -u)" | tee -a $logfilename.txt | jq -R split(:) >> $logfilename.json
echo "logfilename:" $logfilename | tee -a $logfilename.txt | jq -R split(:) >> $logfilename.json

一种方法是使用索引/1,例如沿着以下路线:

jq -R 'index(":") as $ix | {(.[:$ix]) : .[$ix+1:]}'
或者,如果您的jq支持regex,您可能会考虑:

jq -R 'match( "([^:]*):(.*)" ) | .captures | {(.[0].string): .[1].string}'
或:


谢谢你,看到许多方法使我能够更轻松地阅读jq文档,真的很有帮助。我采用了第一种方法,这种方法适用于所有简单的文本字符串情况,例如变量声明。下一步是列表和数组,但将打开一个新问题来处理一些示例案例。再次感谢,很高兴有了可以运行并可以测试的代码选项。@Gabe-很高兴知道有了一些选项很有帮助。你读过吗?
jq -R '[capture( "(?<key>[^:]*):(?<value>.*)" )] | from_entries'