揮発性のメモ2

知識をメモ書きしておく

sortコマンドでテキストを数値を拾ってソートする

{"no":176026, "text":"aiueo"}
{"no":26028, "text":"2024-07-20"}
{"no":3030, "text":"田中"}

こんな感じのJSONの並んだテキスト*1を、テキストのままソートしたい。
幸い先頭が {"no":数値, となっていることは確定しているので、ここを基点にインチキをする。

sort -t, -k1.7n hoge.jsonl

-t 区切り文字指定

区切り文字を指定する。 デフォルトは 空白。 ここではカンマを指定する。

-k キーごとのソートオプション

-k1.7n は、「1番目のキー」の「7文字目以降」を「数値として」ソートする という指定になる。
キーや文字数は 1はじまり

{"no":3030, "text":"田中"}
      ^
1234567

数値としてソートするときは、数値以外の文字以降は無視される
(ので、実はこの例の場合、区切り文字を指定する必要はほぼ無い)


ja.manpages.org

*1:NDJSON や JSON Lines と呼ぶらしい