【问题标题】:extract value from text file using shell script使用 shell 脚本从文本文件中提取值
【发布时间】:2021-08-27 14:33:01
【问题描述】:

我使用 curl 从 restapi 获取响应,下面是响应,我将其保存在文本文件中的位置,例如 c:/rest_api/response.txt。

{"@odata.context":"https://hosted.com/RestApi/v1/$metadata#Edm.String","value":"_tlCijtcSZG0CNTl_cnFxmkz2rjbQtSJQ"}

由于在来自restapi的响应期间每次都会有新值,我想使用shell脚本或者不确定是否可以使用curl只是每次只从这个文本文件中提取值并将其保存在新文件中但不确定如何这样做:

_tlCijtcSZG0CNTl_cnFxmkz2rjbQtSJQ 

【问题讨论】:

    标签: shell curl


    【解决方案1】:

    它看起来像有效的 json。使用 jq。将我的echo 替换为您的curl

    $ echo '{"@odata.context":"h...","value":"_tlCijtcSZG0CNTl_cnFxmkz2rjbQtSJQ"}' \
        | jq -r .value
    _tlCijtcSZG0CNTl_cnFxmkz2rjbQtSJQ
    

    换句话说,就是curl ... | jq -r .value > /output/path

    【讨论】:

    • 我不明白在 curl 中的何处提供 response.txt 位置以读取脚本中的文件?
    • curl 不会从response.txt 读取,curl 会写入它。您只需要将curl 的输出通过管道传输到jq。 (或者让 jq 从 response.txt 中读取)
    • 所以在同一个 curl 命令中,我每次都从 restapi 提取响应并将其保存在 response.txt 文件中,我可以在最后使用 jq -r .value > /output/path 以便它只提取新输出文件中的值字符串?
    • 是:curl ... | jq ... > /output/file 只会将值放入/output/file
    • 我在最后尝试了相同的 curl 命令 | jq -r .value > c:/rest_api/response.txt\test.txt 并得到错误,因为 ['jq' 不是内部或外部命令,
    猜你喜欢
    • 2015-11-04
    • 2019-10-15
    • 2018-06-14
    • 2021-06-15
    • 2017-09-01
    • 1970-01-01
    • 2022-11-14
    • 1970-01-01
    相关资源
    最近更新 更多