ホーム>source

与えられた {"a": 1234567890}1,234,567,890 が欲しい結果として、jqでこれを行う方法

<前>ウィズウィズ echo '{"a": 1234567890}' | jq '.a | FORMAT?'
あなたの答え
  • 解決した方法 # 1

    以下は慣用的な1行の定義です。

    <前>ウィズウィズ 例 <前>ウィズウィズ 出力(-rオプションを使用): <前>ウィズウィズ

  • 解決した方法 # 2

    整数または整数値の文字列の一般的な解決策を次に示します。

    <前>ウィズウィズ 例 <前>ウィズウィズ 結果(-rオプションを使用): <前>ウィズウィズ

  • 解決した方法 # 3

    <前>ウィズウィズ

    これは数値を文字列に変換し、 def h: tostring | [while(length>0; .[:-3]) | .[-3:]] | reverse | join(","); で1つ以上の文字をキャプチャします  (正規表現 12, 123, 1234, 12345678 | h ) そしてその 12 123 1,234 12,345,678 の最後の3文字  (正規表現 # "h" for "human-readable" def h: def hh: .[0] as $s | .[1] as $answer | if ($s|length) == 0 then $answer else ((if $answer == "" then "" else "," end) + $answer ) as $a | [$s[0:-3], $s[-3:] + $a] | hh end; [ tostring, ""] | hh; )そして、一致を 12, 123, 1234, 12345678 | h で置き換えます 、カンマと 12 123 1,234 12,345,678

    オプション echo '{"a": 12345}' | jq -r '.a|tostring|sub("(?<x>.+)(?<y>.{3}$)";"\(.x),\(.y)")'  引用符なしで結果を出力するために使用されます。

  • 解決した方法 # 4

    ウィズウィズ  (まだ) x がありません  ロケール設定に従ってフォーマットする関数。 それがオプションの場合は、 .+ を使用してシェルに番号を渡すことができます :

    <前>ウィズウィズ

    printf変換は y の形式に依存することに注意してください。  それは .{3}$ で説明されています  

    x

関連記事

  • 前へ java - JPAクエリ:サブクエリをグループ化条件に結合する
  • 次へ openssl - phpseclibは公開鍵のみでデータを復号化および暗号化します