2016-08-16 37 views
2

創造文字引號我用提取從JSON字符串,不圍繞價值

id=$(cat an.json | jq '.id') 

擺脫JSON的ID。

當我I echo $id時,輸出是"1a35"

我怎樣才能削減報價"只是得到字符串1a35

+0

順便提一下,'cat foo | bar'一般應該用'bar

回答

1

告訴jq給你的結果作爲原始字符串-r

id=$(jq -r '.id' <an.json) 

我們可以測試這個工作可靠的情況下,比較幼稚的方法不會;作爲一個例子,當用反斜線提取一個id時:

## suggested approach 
$ id=$(jq -r '.id' <<<'{"id": "domain\\user"}' 
$ echo "$id" 
domain\user 

## alternative, corrected to use '[^"]+' rather than '[^"]*' 
$ id=$(jq '.id' <<<'{"id": "domain\\user"}' | grep -E '[^"]+' -o) 
$ echo "$id" 
domain\\user