• 締切済み

sort コマンドについて

sortコマンドで nバイト目からmバイト目までをソートさせたいのですが、 どうすればよいのでしょうか?

みんなの回答

回答No.3

値がないとは改行のみか開始位置より短いという意味でしょうか 普通に考えると、文字コードで比較しますので値がない場合は前になるでしょうね。 あれこれ考えるよりはサンプルを作ってやってみた方が早いです。 最後尾にしたいとか、リストから除外したい場合は、シェルスクリプトにして除外 してからソートするとか、Perlで組むかすればよいかと思います。

y_s-u
質問者

補足

そうですね。実際にやってみます。 >値がないとは改行のみか開始位置より短いという意味でしょうか プログラムでファイルを作る場合の話です。 DBを読み込みファイルに格納します。 DBレコードの中の数バイトにはヌル情報が含まれている可能性があるということです。

回答No.2

field は 先頭が 1、positionは 0です。

y_s-u
質問者

補足

ありがとうございます。 例えば、大きさが10バイトのレコードがいくつかある場合、先頭5バイトをキーにソートするとします。 その中に、値がないキーが存在した(ヌルがあった)場合にはキーがヌルのレコードは無視(削除)されてしまうのでしょうか? そのときそのレコードを例えば、最後に置くことはできるのでしょうか?

回答No.1

man sortくらいやってください! sort +POS1 -POS2 ( obosolete ) sort -k POS1, POS2 ※POS1,POS2 : field.position ---------------------------- bcde fghi jklm nopq abcd efgh ijkl mnop zabc defg hijk lmno cdef ghij klmn opqr ↓ sort -k 2.2, 2.3 zabc defg hijk lmno abcd efgh ijkl mnop bcde fghi jklm nopq cdef ghij klmn opqr

y_s-u
質問者

お礼

ありがとうございます。 私が知りたかったのは、 sort -kfield1.position,field2.position2 のとき position2を含んでソートされるかどうかです。 試してみたところ含まれないようですね。 ((field2.position2-1)までをキーにソートされるということ)

関連するQ&A