【问题标题】:jq to convert two text strings into separate json objectsjq 将两个文本字符串转换为单独的 json 对象
【发布时间】:2017-05-15 05:45:33
【问题描述】:

如何将这两个文本字符串转换成单独的 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

【问题讨论】:

    标签: json bash sh text-processing jq


    【解决方案1】:

    一种方法是使用index/1,例如沿着这些思路:

    jq -R 'index(":") as $ix | {(.[:$ix]) : .[$ix+1:]}'
    

    或者,如果您的 jq 支持正则表达式,您不妨考虑:

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

    或:

    jq -R '[capture( "(?<key>[^:]*):(?<value>.*)" )] | from_entries'
    

    【讨论】:

    • 谢谢,看到许多方法让我能够更轻松地阅读 jq 文档,这真的很有帮助。我采用了第一种方法,它适用于我所有的简单文本字符串案例,例如变量声明。接下来是列表和数组,但会打开一个新问题来处理一些示例案例。再次感谢,很高兴有代码选项可以工作并且可以测试。
    • @Gabe - 很高兴知道有一些选项很有帮助。你读过stackoverflow.com/help/someone-answers 吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-07
    • 2018-01-22
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多