1.03.2基礎
values.txtには2、10、100が1行ずつ入っている。
辞書順ではなく数値の大小で昇順に並べる。
適切なコマンドはどれか。
× 不正解
sort -nは文字列ではなく数値として比較する。逆順が必要なら-rを組み合わせる。
詳細解説
正しい
sort -n values.txt各行の先頭を数値として比較して昇順に並べる。
正しい。-nにより2、10、100をそれぞれ数値として比較し、小さい順に並べる。
誤り
sort values.txt既定の文字列比較では10、100、2のような順になり得る。
誤り。文字列比較では先頭文字1を持つ10と100が2より前になり、数値順にならない。
誤り
sort -r values.txt比較結果を逆順にするが、数値比較を有効にしない。
誤り。-rだけでは文字列比較の逆順であり、数値の大小を正しく評価しない。
誤り
uniq values.txt隣接する重複をまとめ、大小順へ並べ替えない。
誤り。uniqは同じ行が隣接しているかだけを見て、2と10の順序を変更しない。
実際に確かめる
一時的な検証環境で実行できる例です。
printf '10\n2\n100\n' | sort -n期待される結果
2
10
100理解のポイント
- -nはnumeric
- 既定は文字列比較
- -rはreverse
確認時の注意
- 確認環境: GNU coreutils 9.x / 標準入力
基礎のおさらい
ロケール
通常のsort順はLC_COLLATE等の影響を受けるが、数値データには-nなど目的に合う比較を明示する。
安定ソート
同じキーの入力順を維持する必要がある場合は--stableを検討する。
問題IDKL-101-460
確認環境GNU coreutils 9.x / 標準入力
最終技術確認2026-08-13
誤り・権利侵害を報告