tsc*_*oss 5 bash json curl xargs
我有一个带有 JSON-Objects 的源文件,每行一个,如下所示:
来源:
{"_id":"1","name":"one"}
{"_id":"2","name":"two"}
{"_id":"3","name":"three"}
Run Code Online (Sandbox Code Playgroud)
我想将每一行发送到
curl -X POST -H "application/json" myURL -d '<REPLACEMENT>'
Run Code Online (Sandbox Code Playgroud)
当我尝试时,双引号不会使其卷曲
<source xargs -I % curl -X POST -H "application/json" myURL -d '%'
Run Code Online (Sandbox Code Playgroud)
我尝试转义 curl 命令中的引号,后来我用 \" 替换了源文件中的所有双引号。我发现没有可用的版本。
另一种使用 seq 和 sed 将每一行写入临时文件的方法, curl -d @temp 对我不起作用。
是否有一个优雅的解决方案,或者我必须编写一个带有循环的脚本?
这是一个有趣的问题。必须有一个更好的解决方案(也许 konsolebox 正在解决某些问题),但是将所有替换为"with\"会起作用:
$ echo '"hello"'
"hello"
$ echo '"hello"' | xargs echo
hello
$ echo '"hello"' | sed 's/"/\\"/g' | xargs echo
"hello"
Run Code Online (Sandbox Code Playgroud)
GNU Parallel 是专门为处理xargs特殊字符的错误处理而构建的:
<source parallel curl -X POST -H "application/json" myURL -d {}
Run Code Online (Sandbox Code Playgroud)
它不仅会正确引用 ",还会正确引用任何字符串,因此它会被curl 解释为单个参数。
额外的好处:您的查询将并行运行 - 每个 CPU 一个查询。
| 归档时间: |
|
| 查看次数: |
3619 次 |
| 最近记录: |