Командная строка Linux
Шрифт:
А вот и наши старые знакомые!
В главе 6 мы познакомились с некоторыми командами, способными принимать данные не только из аргументов командной строки, но и из стандартного ввода. В той главе мы очень коротко познакомились с ними, но сейчас пришло время более близкого знакомства — мы узнаем, как их можно использовать для обработки текста.
cat — объединение файлов и вывод их в стандартный поток вывода
Программа cat содержит множество интересных параметров. Многие
Давайте создадим файл для экспериментов, используя cat как примитивный текстовый процессор. Для этого введем команду cat (указав файл для перенаправления вывода), а следом наш текст, завершив строки нажатием клавиши ENTER и закончив все комбинацией CTRL+D — она сообщит программе cat, что достигнут конец файла. В этом примере мы ввели символ табуляции и добавили в конец строки несколько пробелов:
[me@linuxbox ~]$ cat > foo.txt
The quick brown fox jumped over the lazy dog12.
[me@linuxbox ~]$
Далее, вызовем cat с параметром -A, чтобы показать текст:
[me@linuxbox ~]$ cat -A foo.txt
^IThe quick brown fox jumped over the lazy dog. $
[me@linuxbox ~]$
Как видите, символ табуляции в тексте представлен парой символов ^I. Эта обычная форма записи означает «CTRL+I», то есть, как оказывается, — символ табуляции. Здесь также видно, что символ $ отмечает истинный конец строки, помогая увидеть дополнительные пробелы в конце строки.
текст в ms-dos и unix
Одна из причин, почему может появиться желание использовать cat для отображения непечатаемых символов в тексте, — необходимость определить присутствие символов возврата каретки. Откуда берутся скрытые возвраты каретки? Из DOS и Windows! В Unix и DOS концы строк в текстовых файлах оформляются по-разному. В Unix строки заканчиваются символом перевода строки (ASCII 10), тогда как в MS-DOS и ее наследницах для этой цели используется последовательность из возврата каретки (ASCII 13) и перевода строки.
Существует несколько способов преобразовать файлы из формата DOS в формат Unix. Во многих системах Linux имеются программы unix2dos и dos2unix для преобразования текстовых файлов в формат DOS и обратно. Однако если в вашей системе нет программы dos2unix, не волнуйтесь. Процесс преобразования текста из формата DOS в формат Unix очень прост — достаточно лишь удалить ненужные возвраты каретки. Это можно сделать с помощью пары программ, с которыми мы познакомимся ниже в этой главе.
Программа cat имеет также параметры, используемые для изменения текста. Наиболее известными являются -n, добавляющий
[me@linuxbox ~]$ cat > foo.txt
The quick brown fox
jumped over the lazy dog.
[me@linuxbox ~]$ cat -ns foo.txt
1 The quick brown fox
2
3 jumped over the lazy dog.
[me@linuxbox ~]$
В этом примере мы создали новую версию тестового файла foo.txt, содержащую две строки, разделенные двумя пустыми строками. После обработки текста командой cat с параметрами -ns одна пустая строка была удалена, а остальные строки пронумерованы. Хотя это не самая сложная обработка текста, все же это обработка.
sort — сортировка строк текстовых файлов
Программа sort сортирует содержимое стандартного ввода или одного или нескольких файлов, указанных в командной строке, и записывает результаты в стандартный вывод. Применив тот же прием, который мы использовали совместно с командой cat, можно продемонстрировать обработку стандартного ввода.
[me@linuxbox ~]$ sort > foo.txt
c
b
a
[me@linuxbox ~]$ cat foo.txt
a
b
c
После запуска команды мы ввели буквы c, b и a, а затем признак конца файла с помощью комбинации CTRL+D. Затем просмотрели получившийся файл и увидели, что строки в нем отсортированы.
Поскольку sort может принимать несколько файлов в аргументах командной строки, существует возможность объединить множество файлов в один отсортированный файл. Например, если у вас имеется три файла и вам нужно объединить их в один отсортированный файл, это можно выполнить следующим образом:
sort file1.txt file2.txt file3.txt > final_sorted_list.txt
Программа sort имеет несколько интересных параметров. Их неполный список приводится в табл. 20.1.
Таблица 20.1. Часто используемые параметры команды sort
Параметр
Длинный параметр
Описание
– b
– -ignore-leading-blanks
По умолчанию сортировка выполняется с учетом содержимого всей строки, начиная с первого символа. Этот параметр заставляет sort игнорировать начальные пробелы в строках и при сортировке начинать сравнение строк с первых непробельных символов
– f
– -ignore-case
Выполнять сортировку без учета регистра символов
– n
– -numeric-sort
Выполнять сортировку, опираясь на числовые значения строк. Этот параметр позволяет осуществлять сортировку в соответствии с числовыми значениями, а не по алфавиту
– r
– -reverse
Сортировать в обратном порядке. Строки в результате будут следовать в порядке убывания, а не возрастания
– k
– -key=поле1[,поле2]
Сортировать по ключевым полям, начиная с поля1 и заканчивая полем2, а не по всей строке