sort -V
でも可。
結論
git tag | sort -V # 昇順 git tag | sort -Vr # 降順
フルネームだと以下。
git tag | sort --version-sort git tag | sort --version-sort --reverse
検証用。
echo -e "v1.9\nv1.10\nv1.11" | sort -V echo -e "v1.9\nv1.10\nv1.11" | sort -Vr
探したログ
前回、GitHubにてリリースすべくバージョンタグを付与した。以下コマンドでタグ一覧できる。
git tag
しかし、昇順である。これを最新順にしたい。このとき、数値として大小比較してほしい。
以下でソートすると文字列比較の降順になる。1.2
は1.11
よりも大きくなってしまう問題をなんとかしたい。
git tag | sort --reverse
echo -e "1.2\n1.11" | sort --reverse
桁数が一致しているうちは問題ない。
echo -e "2\n3\n1" | sort echo -e "2\n3\n1" | sort -r
echo -e "1.2\n1.3\n1.1" | sort echo -e "1.2\n1.3\n1.1" | sort -r
桁数が合わなくなると文字列比較の弊害が出る。以下のとおり。
echo -e "1.9\n1.10\n1.11" | sort echo -e "1.9\n1.10\n1.11" | sort -r
-t
で区切り文字を指定し、-n
で数値としてソートするらしい。
だが、以下のようにしてもダメだった。
echo -e "1.9\n1.10\n1.11" | sort -t '.' -n
echo -e "1.2\n1.11" | sort --reverse -t '.' -n
以下で成功!
echo -e "1.9\n1.10\n1.11" | sort --version-sort
v
プレフィクスがついていてもOK!
echo -e "v1.9\nv1.10\nv1.11" | sort --version-sort
対象環境
- Raspbierry pi 4 Model B
- Raspbian buster 10.0 2019-09-26 ※
- bash 5.0.3(1)-release
$ uname -a Linux raspberrypi 4.19.75-v7l+ #1270 SMP Tue Sep 24 18:51:41 BST 2019 armv7l GNU/Linux