単語や文字列を含む行全体を提供するようにjqを使用して出力を取得する方法

単語や文字列を含む行全体を提供するようにjqを使用して出力を取得する方法

私の質問はかなり似ていますが、まだ詳細に説明できます。天気情報を取得できる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はそれを素敵に飾り、シンプルにすることができると聞きました。誰かが何をしているのか教えてもらえますか?また、カールの代わりにデータを取得する別の方法がある場合は興味深いでしょう。

FWIW ja 1.6がインストールされており、bashバージョンは5.1.8です。

ベストアンサー1

そしてjq

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

出力:

2021-11-11午前03:01

おすすめ記事