使用jq将String中的占位符替换为实际值

时间:2018-02-01 07:23:01

标签: json string-matching jq

它不起作用。如何检查字符串的一部分(而不是整个字符串)?

test.json

{
 "url": "https://<part1>.test/hai/<part1>"
}



jq --arg input "$arg" \
   'if .url == "<part1>"
     then . + {"url" : ("https://" + $input + ".test/hai/" + $input)  }
       else . end' test.json  > test123.json

1 个答案:

答案 0 :(得分:1)

在你的test.json中,.url的值为"<part1>",所以显然你不想检查它的值是否为.url | contains("<part1>")

也许您打算测试条件:.url | endswith("<part1>")test/1 - 问题描述不清楚。

如果你的jq支持正则表达式,你可以使用.url | test("//<part1>.*<part1>$") ,例如

gsub

另一种可能性是使用<?php $data = [ 'email' => 'jsnow@got.com', 'token' => '58938539' ]; $username = "auth-user"; $password = "auth-pwd"; $string = http_build_query($data); $ch = curl_init("http://www.econcentre.com/receiver.php"); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $string); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_USERPWD, $username . ":" . $password); curl_setopt($ch, CURLOPT_TIMEOUT, 30); $response = curl_exec($ch); curl_close($ch); ?>