КОМАНДА SORT

 

   Команда  SORT  считывает  данные  с  устройства ввода, сортирует их и
пересылает  на  устройство  вывода.  Рассмотрим  работу  SORT на примере
создания  маленького  текстового  файла  records.txt.  Этот  файл  можно
организовать с помощью команды copy con:  (или используя EDLIN). Файл не
должен включать символов табуляции, т.к. они могут повлиять на результат
работы SORT.

         C>copy con: records.txt
         springsteen     bruce    born to run             1975
         floyd           pink     dark side of the moon   1973
         stevens         cat      tea for the tillerman   1970
         ronstadt        linda    heart like a wheel      1974
         ^Z        <------ нажмите Ctrl-Z
             1 File(s) copied

   Теперь, имея текстовый файл, рассмотрим действие команды SORT.   SORT
является внешней  командой MS-DOS.  Это означает,  что ее  обpаботчик не
загpужается  память  при  загрузке  опеpационной  системы.  Поэтому  пpи
обращении к SORT в  рабочем директории рабочего диска  должен находиться
файл SORT.EXE  (рабочие директории  рассмотpены в  гл.3). Пусть  в нашем
примере для простоты файлы  SORT.EXE и records.txt находятся  в корневом
директории рабочего диска.
   Для  пересылки  данных  на  вход  команды  SORT  используется  символ
направленного ввода (<). Входные данные - содержимое файла  records.txt.
Информация  сортируется  в  алфавитном  порядке.  За алфавит принимается
последовательность стандартного кода ASCII (см.приложение F). Сортировка
производится  по  первой  позиции  строки.  Отсортированная   информация
выводится на экран - стандартное устройство вывода.

         C>sort < records.txt

         FLOYD          PINK     DARK SIDE OF THE MOON   1973
         RONSTDAT       LINDA    HEART LIKE A WHEEL      1974
         SPRINGSTEEN    BRUCE    BORN TO RUN             1975
         STEVENS        CAT      TEA FOR THE TILLERMAN   1970

   Команда SORT может сортировать данные по любой позиции строки как  по
алфавиту,  так  и  в  порядке,  обратном алфавитному (см.стандартный код
ASCII). Чтобы произвести сортировку по n-ому символу строки,  набирается
команда:  sort /+n. Ниже файл records.txt соpтиpуется по 17-й позиции. В
листинге позиция, по которой  сортируется файл, в дальнейшем  помечается
звездочкой (*).

         С>sort /+17 < records.txt
                         *
         SPRINGSTEEN    BRUCE    BORN TO RUN             1975
         STEVENS        CAT      TEA FOR THE TILLERMAN   1970
         RONSTDAT       LINDA    HEART LIKE A WHEEL      1974
         FLOYD          PINK     DARK SIDE OF THE MOON   1973

   Если  в  целях  выравнивания  ввести  в  строку символы табуляции, то
результат  сортировки   будет  непредсказуем,   т.к.  символ   табуляции
интеpпpетиpуется командой как символ,  поглощающий смежные с ним  пустые
символы.  Посмотрим,  что  произойдет,  если  первые  две  строки  файла
records.txt  будут  включать  символы  табуляции.  В первой строке слову
"BRUCE" предшествуют 16 символов:  слово SPRINGSTEEN и пять пробелов. Во
второй  строке  слову  "САТ"  также  предшествуют  16  символов:   слово
"STEVENS" и девять  пробелов. Если в  целях выравнивания ввести  символы
табуляции, то до слова "BRUCE"  останется 12 символов:  "SPRINGSTEEN"  и
символ табуляции,  а до  слова "САТ"  - 8  символов:   "STEVEN" и символ
табуляции.  Tеперь команда SORT, при сортировке по 17-й позиции  строки,
не выйдет на начальные буквы слов "BRUCE" и "CAT", т.е. сортировка будет
произведена неправильно.
   Файл можно  сортировать в  алфавитном порядке  и в  порядке, обратном
алфавитному (в  соответствии со  стандартным кодом  ASCII). В  последнем
случае команда SORT будет выглядеть следующим образом:  "sort /r+n", где
n - позиция строки, по которой производится сортировка, а r -  параметр,
обозначающий обратный  порядок сортировки.  Команда "sort  /r" означает,
что  сортировка  производится  по  первому  символу  строки  в  порядке,
обратном алфавитному.
   Следующая команда сортирует файл record.txt. Сортировка  производится
по  52-му  символу  строки.  Строки  соpтиpуются  в  порядке,   обратном
алфавитному:

         C>sort /r+52 < records.txt
                                                             *
         SPRINGSTEEN    BRUCE    BORN TO RUN             1975
         RONSTDAT       LINDA    HEART LIKE A WHEEL      1974
         FLOYD          PINK     DARK SIDE OF THE MOON   1973
         STEVENS        CAT      TEA FOR THE TILLERMAN   1970
   Результат  сортировки  можно  переслать  на  нестандартное устройство
вывода. В следующем примере файл records.txt соpтиpуется по 25-й позиции
строки в  алфавитном порядке.  Результат выводится  на принтер.   PRN  -
стандартное имя первого параллельного принтера.

         С>sort /+25 < records.txt > prn

   На принтере появится:
                                 *
         SPRINGSTEEN    BRUCE    BORN TO RUN             1975
         FLOYD          PINK     DARK SIDE OF THE MOON   1973
         RONSTDAT       LINDA    HEART LIKE A WHEEL      1974
         STEVENS        CAT      TEA FOR THE TILLERMAN   1970

   Этот результат можно записать на диск в виде файла. Файл, к  примеру,
может называться sorted.txt:

         C>sort /25+ <records.txt > sorted.txt

   Чтобы  посмотреть  содержимое  файла  sorted.txt  на экране, наберите
команду "type sorted.txt".
 

Вы находитесь в разделе: 
Также вам будет интересно:

Добавить коментарий