データの順序を並び替えて表示 sort

sort.exe
初心者でも簡単に使えるコマンドの紹介です。
今回はsortというコマンドを解説しようと思います。
このsortは、入力されたデータを比較し、並べ替えた結果を画面に表示するコマンドです。
並び替えるデータには、キーボードやファイルから読み込んだデータ、 また他のコマンドの実行結果の出力なども対象とする事ができます。 上手く並び替えるにはデータ構造に一定の規則性がなければなりませんが、 使えると結構便利なコマンドです。
今回も、基本的な機能をいくつかの例を挙げながら説明していこうと思います。
では、最後まで宜しくお願い致します。

このページのトップへ

以下は、sortの書式とオプションの一覧です。
sort [/r] [/+n] [/m kb] [/L ロケール] [/rec 文字数]
 [ファイル名] [/t パス名] [/o 出力ファイル名]
ファイル名 並び替えの対象とするファイル名を指定。指定されていない場合は標準入力を並び替え
/R[EVERSE] 降順に並び替える(ZからA、9から0)
/+n 各行の並び替えの比較を始めるデータの位置を指定
/L[OCALE] ロケール 指定されたロケール(言語や単位などの地域情報)で、システム既定のロケールを上書き
/M[EMORY] KB 並べ替えに使うメインメモリのサイズをKBで指定
/REC[ORD_MAXIMUM] 文字数 一行の最大文字数を指定(既定値は4096文字、最大値は65535)
/T[EMPORARY] パス名 データをメインメモリに格納できない時の為の、一時記憶域を保持するディレクトリを指定(既定ではシステムの一時ディレクトリを使用)
/O[UTPUT] 出力ファイル名 並び替えられたデータを出力するファイル名を指定
上の書式では少しわかり難いので、もう少し簡単に書くと・・
sort < オプション1 ファイル名 オプション2
となります。
オプション1には、表の左側「緑色」のセルに記述してある
/R[EVERSE]
/+n
/L[OCALE] ロケール
/M[EMORY] KB
/REC[ORD_MAXIMUM] 文字数
オプション2には、表の左側「青色」のセルに記述してある
/T[EMPORARY] パス名
/O[UTPUT] 出力ファイル名
を指定します。
このページのトップへ
並び替えを行うデータは通常は指定したファイルになりますが、 もしもファイル名が省略された場合は、標準入力(通常はキーボード)からの入力データが処理の対象となります。
またsortでは、 他のコマンドによる実行結果の出力内容を |(パイプ)によって引継ぎ、 そのデータを並び替えの対象とする事ができます。
C:¥>dir sample | sort
データ並び替えの基準ですが、 何も指定しない場合にはデフォルトの設定「行頭の文字を基準に昇順」で 並び替えが行われます。
※比較は文字コードを元に行われています。
この並び替えの基準となるデータの位置は「/+n」で変更する事ができます。 例えば、/+7を指定すれば、先頭から7行目の位置にある文字を基準にして 並び替えが行われます。
C:¥>sort /+2 sam1.txt ←先頭から2行目の文字を基準に
ただ、この/+nオプションを有効に使用するには、 並び替えを行うデータに一定の規則性がなくてはなりません。例えば3桁目に郵便番号、16桁目に年齢・・ などというように、データ内の桁数が揃っていなくては意味がないので使用の際には注意して下さい。
このページのトップへ
そして/mオプションでは、 並び替えを行う際に利用するメインメモリのサイズを指定する事ができます。 ただし、常に最小値として160KBが確保されており、メモリサイズ指定時には、 指定サイズのメモリを使用します。
もしも実装しているメモリを超えて指定した場合、超えた分は一時記憶領域に確保されます。
※デフォルトでは、並べ替え時のデータがメモリ(既定のサイズ)に格納できる場合は 一時ファイルを使用せずに実行します。 格納できない場合、まず並び替えが行われたデータを一時ファイルに格納し、 もう一度並び替えを実行、そしてデータを結合します。
/mを指定しない場合のメモリサイズは、 入出力を行うデータがファイルの場合に90%、それ以外では45%となります。
/oは並び替えを行ったデータをファイルに出力させるオプションです。 リダイレクトを使用してファイルに出力するのと同じです。 (Windows ME以前のsortコマンドでは、/oオプション が利用できなかったのでファイル出力にはリダイレクト機能を使用するしかなかった)
C:¥>sort sam1.txt /o sam2.txt←sam2.txtに出力
このページのトップへ

では早速例を挙げてみることにします。
サンプルファイルとして、以下のsam1.txtを使用します。
sortの使用例
あ 10
き 03
い 04
こ 08
う 06
そ 11
く 07
す 09
え 15
し 01
せ 12
お 02
け 13
か 05
さ 14
このページのトップへ
まずはじめに、sam1.txtのデータの先頭文字を基準にして並び替えを行います。
sortの使用例
C:¥>sort sam1.txt
sortでは、オプションに何も指定しない場合はデフォルトの設定 (行頭の文字を基準に昇順で並び替え)で並び替えを行いますので、 ファイル名の指定だけでOKです。
実行すると以下のように表示されます。
sortの使用例
あいうえおかきくけ・・」というように、行頭の文字を基準に 並び替えが行われました。
あ 10
い 04
う 06
え 15
お 02
か 05
き 03
く 07
け 13
こ 08
さ 14
し 01
す 09
せ 12
そ 11
このページのトップへ

では次に同じファイルのデータを使用し、先頭から4桁目の文字を基準に並び替えてみます。
sortの使用例
C:¥>sort /+4 sam1.txt
/+nオプションを指定すると、並び替えの対象となるデータの位置を 指定する事ができます。 ここでは「/+4」が指定されているので、 行頭から4桁目を基準に並び替えを行います。
以下、実行結果です。
sortの使用例
行頭から4桁目(行末の数値)を基準に並び替えが行われました。
あ 10
し 01
そ 11
せ 12
お 02
き 03
け 13
さ 14
い 04
か 05
え 15
う 06
く 07
こ 08
す 09
このページのトップへ

次は、dirコマンドの実行結果の出力を、 パイプを使用してsortに引継ぎ、日付順で並び替えを行います。
sortの使用例
C:¥>dir sample | sort
dirコマンドは、ディレクトリ内のファイルとサブディレクトリを一覧表示するコマンドです。
ここではそのデータ(ディレクトリ内のファイル一覧)を、 |(パイプ) を使用してsortコマンドへと引き渡します。 ・・・|(パイプ)は delfindstr他・・の解説記事でも 登場しましたが、これは先のコマンドの実行結果を後のコマンドに引き渡す機能をもっています。
dirから渡されたデータは日付順で並び替えを行います。
ここでは日付データが先頭にきているので何も指定しません。
以下、実行結果です。
sortの使用例
dirの出力データが日付順に並び替えられました。
2009/09/19  18:11             1,440 sample3.txt
2009/09/19  18:22               148 find.txt
2009/09/24  16:51                23 ttt.txt
2009/09/24  19:35               408 ssss.txt
2009/09/25  10:07                18 cc.txt
2009/09/25  12:08             1,039 sample.txt
2009/09/28  11:10               226 sample.c
2009/09/28  11:10            66,048 sample.exe
2009/09/28  11:20                15 redirect.txt
2009/09/28  11:57                 2 ssssssss.txt
2009/09/29  18:09    <DIR>          aaa
2009/09/29  18:34                26 sample2.txt
2009/09/30  18:10               183 findstr.txt
2009/09/30  18:40               177 findstr2.txt
2009/10/05  16:47    <DIR>          .
2009/10/05  16:47    <DIR>          ..
2009/10/05  16:53                34 err.txt
このページのトップへ

ではそのまま続けて、今度は上の実行結果(sortで並び替えたdirのデータ) をsam2.txtファイルに出力します。
sortの使用例
C:¥>dir sample | sort /o sam2.txt
/o sam2.txtで、sam2.txtに出力する事ができます。
もちろんリダイレクトを使用しても同じ事ができます。
C:¥>dir sample | sort > sam2.txt  ←リダイレクトを使用してもOK
以下、実行結果です
sortの使用例
データは画面には出力されませんでした。
sam2.txtを確認してみます。
sortの使用例
このように、日付順で並び替えられたdirデータがsam2.txtに 出力されました。
このページのトップへ

では最後です。
今度はもう少し複雑にしてみます。
sortの使用例
C:¥>dir sample | findstr "sample find" | sort /+29
dirの実行結果の出力をfindstrに 引き渡し、findstrで「sample」 「find」という2つの文字列を含む行を検索した後、 そのデータを更にsortに引き渡します。
sortに渡されたデータは、/+29オプションで 行頭から29桁目、つまりファイルサイズを基準にして並び替えが行われます。
以下、実行結果です。
sortの使用例
sample」「find」のうち いずれかの文字列を含む行が、ファイルサイズを基準に並び替えられました。
 C:¥sample のディレクトリ
2009/09/29  18:34                26 sample2.txt
2009/09/19  18:22               148 find.txt
2009/09/30  18:40               177 findstr2.txt
2009/09/30  18:10               183 findstr.txt
2009/09/28  11:10               226 sample.c
2009/09/25  12:08             1,039 sample.txt
2009/09/19  18:11             1,440 sample3.txt
2009/09/28  11:10            66,048 sample.exe
このページのトップへ

sortの説明は以上となります。
このコマンドは使い慣れると結構便利です。 色々なオプションが用意されていますが、常に全てを使用するわけではないので、 理解しきれないものがあってもそれ程気にする必要はないと思います。
ちなみに各コマンドには、余り意味がないのではと思われるようなオプションもいくつか見られます。
それらは、OSがバージョンアップしてコマンドの機能も追加されていった為に、 使う意味がなくなってしまっただけであり、 古いOSのDOSなどでは使用する意味があったのです。
sort/oもMEや98などではなかったように、 OSのバージョンが変わると、多少コマンドの内容も変わってくるという事を覚えておいてください。
では、また次回も宜しくお願い致します。
このページのトップへ
メインメモリとは
ソートとは

※キーマンズネットのIT単語帳ページへ飛びます。
様々なIT専門用語の意味を詳しく知る事ができます。
サイト上の情報利用により生じた損害等には一切責任を持ちません
2009.10.12 Monday | 初心者でも簡単コマンドプロンプト | comments(0) | trackbacks(0) | 記事URL
▲PAGETOP
同カテゴリーの記事 最新5件
Comment:
Add a comment:











※コメントは管理者が承認後表示されます。
Trackback:
http://shop.denkaseihin.com/trackback/604
※記事と関連性が低い等、管理人が不適当と判断したものについては削除させて頂きます。
新着記事
CATEGORY
まめ知識
COMMENT
  • 巨大なサイズのファイルも一瞬で削除出来るコマンド del
    denkaseihin (04/15)
  • 巨大なサイズのファイルも一瞬で削除出来るコマンド del
    原田 (04/14)
  • HPの h8-1080jpレビュー 内蔵GPU〜GTX580まで可のSandy Bridge搭載マシン
    denkaseihin (09/18)
  • HPの h8-1080jpレビュー 内蔵GPU〜GTX580まで可のSandy Bridge搭載マシン
    ヨーイチ (09/18)
  • HPの h8-1080jpレビュー 内蔵GPU〜GTX580まで可のSandy Bridge搭載マシン
    denkaseihin (09/14)
  • HPの h8-1080jpレビュー 内蔵GPU〜GTX580まで可のSandy Bridge搭載マシン
    MN (09/13)
  • Firefoxでcookieが保存されないという現象が発生したら
    denkaseihin (10/28)
  • Firefoxでcookieが保存されないという現象が発生したら
    KEKE (10/27)
SMTWTFS
      1
2345678
9101112131415
16171819202122
23242526272829
30      
<< June 2019 >>
RSS
ARCHIVES
MOBILE
qrcode
LINK

Copyright © 2005 - denkaseihin. All Rights Reserved.