Grep

如何使用 jq 獲取輸出,因為它為我提供了單詞或字元串進入的整行

  • November 16, 2021

我的問題與它有些相似,但仍然允許我詳細說明。我一直在訪問一個名為 wttr.in 的天氣應用程序,從中可以獲取天氣資訊。這可以很容易地通過 -

$ curl wttr.in/Pune?format=4

現在我很想知道氣象站是提供目前數據還是陳舊數據,我知道了一種叫做 j1 格式的東西,它給出了伺服器上次更新天氣資訊的時間。

$ curl wttr.in/Pune?format=j1 | less

上面的查詢給了我大量的數據,比如 -

current_condition": [
       {
           "FeelsLikeC": "18",
           "FeelsLikeF": "65",
           "cloudcover": "4",
           "humidity": "42",
           "localObsDateTime": "2021-11-11 12:20 AM",
           "observation_time": "06:50 PM",
           "precipInches": "0.0",
           "precipMM": "0.0",
           "pressure": "1012",
           "pressureInches": "30",
           "temp_C": "18",

現在,如果我使用 grep 我會得到這樣的輸出 -

$ curl wttr.in/Pune?format=j1 | grep "localObsDateTime"
 % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                Dload  Upload   Total   Spent    Left  Speed
 2 48685    2  1159    0     0   4199      0  0:00:11 --:--:--  0:00:11  4184            "localObsDateTime": "2021-11-11 12:20 AM",
100 48685  100 48685    0     0  90830      0 --:--:-- --:--:-- --:--:-- 90661

我聽說 jq 可以美化它並且 makt ie 容易,誰能告訴我如何。此外,如果有任何其他方式來獲取數據,而不是 curl 也會很有趣。

FWIW 我已經安裝了 ja 1.6,最後的 bash 版本是 5.1.8。

您可以使用:

curl wttr.in/Pune?format=j1 | jq '.current_condition[].localObsDateTime'

jq

curl -s 'http://wttr.in/Pune?format=j1' | jq -r '.current_condition[].localObsDateTime'

輸出:

2021-11-11 03:01 AM

引用自:https://unix.stackexchange.com/questions/676957