Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Использование фильтров

Фильтр - это команда, которая берет ввод из аргументов командной строки, если они есть, иначе ввод читается из стандартного ввода.

Один важный момент, связанный с фильтрами - это способ их вызова. Если Вы помещаете имя файла в командную строку, фильтр открывает файл и читает данные.

Давайте для начала рассмотрим несколько примеров. Уже знакомая Вам команда wc является фильтром. Мы можем вызывать ее как

 

wc file1 file2 file3

 

чтобы она подсчитала слова в трех файлах. А если бы мы написали

 

ls file1 file2 file3 | wc

 

команда wc подсчитала бы количество символов, которые выдала бы ls. В данном случае в строке file1 file2 file3 15 символов. Как нам получить реальные файловые данные, а не имена файлов в wc? Изменяя способ, которым мы вызываем wc:

 

cat file1 file2 file3 | wс

 

Путем предварительного соединения файлов, данные передаются на вход wc, и wc суммирует подсчитанные количества символов в содержимом файлов. Та же самая концепция применима для всех команд фильтров.

 

cat - слияние и вывод содержимого файлов.

 

cat [опции] [файл1] [файл2]...

Команда cat по очереди читает указанные файлы и выдает их содержимое на стандартный вывод. Так, например,

 

cat f

распечатывает содержимое файла f, а

 

cat f1 f2 > f3

сливает первые два файла и помещает результат в третий. Чтобы добавить файл f1 к файлу f2, надо выполнить команду

 

cat f1 >> f2

Если не указан ни один файл или среди аргументов встретился - (дефис), команда cat читает данные со стандартного ввода.

Опции команды cat:

-s Не сообщается о несуществующих файлах.
-v Визуализация непечатных символов (кроме табуляций, переводов строк и переходов к новой странице). Управляющие символы изображаются в виде ^X (CTRL+X); символ DEL (восьмеричное 0177) - в виде ^?. Символы, не входящие в набор ASCII (то есть со взведенным восьмым битом) выдаются в виде M-x, где x - определяемый младшими семью битами символ.

С опцией -v можно использовать следующие опции:

-t Визуализация символов табуляции в виде ^I.
-e Визуализация символов перевода строки в виде $ (строка при этом все же переводится).

Если опция -v не указана, то опции -t и -e игнорируются.

 

wc - подсчет количества символов, слов и строк в файле

 

wc [-l] [-w] [-c] [-L] [файл...]

Команда wc подсчитывает строки, слова и символы, читая их из указанных файлов или со стандартного ввода, если файлы не заданы. Подсчитывается также общий итог для всех указанных файлов.

Слово - это максимальная цепочка символов, не содержащая пробелов, табуляций и переводов строк.

Опции команды wc:

-l Подсчет числа строк.
-w Подсчет числа слов.
-c Подсчет числа символов.
-L Подсчет длины самой длинной строки

Можно задавать любую комбинацию этих опций. По умолчанию используется набор -lwc.

Если в командной строке указаны имена файлов, то они выводятся после соответствующих сумм.

 

head - показывает первые строки файла

head [опции] [file...]

Выводит на экран первые строки указанного файла. По умолчанию число строк равно 10. Число выводимых строк можно указать после опции -n. Если не указан ни один файл или среди аргументов встретился - (дефис), команда head читает данные со стандартного ввода.

Если в командной строке указано более одного имени файла, то перед распечаткой каждого из них будет выводиться однострочный заголовок, содержащий имя файла вида

==> XXX <==

 

где ХХХ – имя соответствующего файла.

Опции команды head:

- number Эта опция распознается, только если она указана первой. Параметр number – десятичное число (размер), за которым может следовать буква (единица измерения).
-c --bytes= n Вместо принятых по умолчанию начальных строк печатает содержимое указанного числа байт. Добавив к указанному количеству букву, можно производить распечатку в блоках: - b – 512 байт; - k – 1024 байт; - m – 1048576 байт.
-n n --lines= n Выводит первые n строк
-q Не печатает заголовки, содержащие имена файлов
-v Печатает заголовки, содержащие имена файлов

 

tail - показывает последние строки файла

tail [опции] [файл]

Команда tail выводит указанный файл на стандартный вывод, начиная с определенного места. Если файл не задан, то используется стандартный ввод.

Вывод начинается с позиции на расстоянии +число от начала или -число от конца исходного файла. Если число не указано, то принимается значение, равное 10. Должен быть указан ровно один из знаков + или -.

Опции команды tail:

-n --lines= n Выводит последние n строк  
-c --bytes= n Вместо принятых по умолчанию последних строк печатает содержимое указанного числа последних байт.
-q Не печатает заголовки, содержащие имена файлов
-v Печатает заголовки, содержащие имена файлов

 

Если первый символ параметра n является знаком +, то вывод осуществляется с n -го байта или строки от начала файла. Добавив к указанному количеству букву, можно производить распечатку в блоках:

- b – 512 байт;

- k – 1024 байт;

- m – 1048576 байт.

Если единица измерения не задана, то расстояние измеряется в строках; разумеется, нельзя указывать больше одной единицы измерения.

 

tr - преобразование символов

tr [-c] [-d] [-s] [набор_1 [набор_2]]

Команда tr копирует стандартный ввод на стандартный вывод с заменой либо удалением выбранных символов. Введенные символы, найденные в наборе_1, заменяются на соответствующие символы из набора_2. Допускаются любые комбинации опций -cds:

-c набор_1 заменяется его дополнением до множества символов с восьмеричными кодами от 001 до 377.
-d Удалить все символы, принадлежащие набору_1
-s Заменить последовательность одинаковых символов в наборе_1 на один такой символ.
-t Усечь набор_1, если он длиннее набора_2.

Чтобы помещать в цепочки отрезки алфавита и повторяющиеся символы, можно использовать следующие сокращения:

[c1-c2] Обозначает цепочку символов, коды ASCII которых принадлежат отрезку от кода символа c1 до c2.
[c*n] Обозначает символ c, повторенный n раз. Если первая цифра в n есть 0, n рассматривается как восьмеричное число; иначе - как десятичное. Нулевое или отсутствующее n воспринимается как "очень много"; эта возможность полезна при дополнении цепочки_2 до длины цепочки_1.

Управляющий символ \ можно использовать, чтобы отменить трактовку символа в цепочке-аргументе как специального. Кроме того, \, за которым идут одна, две или три восьмеричные цифры, обозначает символ, код ASCII которого выражается этими цифрами.

В команде tr можно использовать следующие наименования классов:

- [[:alnum:]] – буквы и цифры;

- [[:alpha:]] – буквы;

- [[:blank:]] – пробел и табуляция;

- [[:cntrl:]] – управляющие символы;

- [[:digit:]] – цифры;

- [[:graph:]] – печатаемые символы (без пробела и табуляции);

- [[:lower:]] – строчные буквы;

- [[:print:]] – печатаемые символы (с пробелом и табуляцией);

- [[:punct:]] – знаки пунктуации;

- [[:space:]] – горизонтальные и вертикальные пробелы (символы пропуска);

- [[:upper:]] – прописные буквы;

- [[:xdigit:]] – шестнадцатеричные цифры.

 

sort - сортировка и/или слияние файлов

sort [-c] [-m] [-u] [-o выходной_файл] [-d] [-f] [-i] [-M] [-n] [-r] [-b] [-t разделитель] [+позиция_1 [-позиция_2]] [файл...]

Команда sort сортирует строки, входящие во все исходные файлы, и выдает результат на стандартный вывод. Если имена файлов не указаны, или в качестве файла указан – (дефис), исходная информация поступает со стандартного ввода.

При упорядочении используется один или несколько ключей сортировки, выделяемых из каждой вводимой строки. По умолчанию ключ сортировки один – вся строка, а порядок является лексикографическим, соответствующим принятой кодировке символов.

При сортировке команда sort учитывает структуру файла. Если при вызове не указать ни одного параметра, строки сортируются сначала по первому полю (по умолчанию разделителем полей является пробел или табуляция; поля нумеруются начиная с нуля). Если в нескольких строках содержимое первого поля одинаково, производится сортировка этих строк по второму полю. Если второе одинаково – по третьему полю и т.д.

Следующие опции изменяют стандартный порядок работы:

-c Проверить, является ли исходный файл уже отсортированным. На стандартный вывод ничего не выдается. В стандартный протокол выводится соответствующее сообщение только в случае нарушения упорядоченности строк.
-m Только слияние исходных файлов, которые ранее отсортированы.
-u Опция уникальности: из всех совпадающих строк выводить только одну.
-o file Результат направляется не на стандартный вывод, а в файл file, который может совпадать с одним из исходных.

Следующие опции позволяют выбрать нужный способ сравнения:

-d "Словарный" порядок: при сравнении являются значимыми только буквы, цифры, пробелы и знаки табуляции.
-f Преобразовывать строчные буквы в прописные.
-i При нечисловых сравнениях игнорировать не ASCII-символы.
-M Сравнивать как месяца. Первые три символа, отличные от пробела, сравниваются таким образом, что "JAN" < "FEB" <... < "DEC" (малые буквы преобразуются в большие). Остальные трехсимвольные сочетания считаются меньшими, чем "JAN". Эта опция включает опцию -b (см. ниже).
-n Числовое сравнение. Начальные пробелы отбрасываются, затем цифровые цепочки символов, содержащие быть может знак минус и десятичную точку, сравниваются как числа. Эта опция включает опцию -b (см. ниже). Отметим, что опция -b действует только на ключи сортировки с наложенными ограничениями.
-r Выполнить сортировку в обратном порядке.

Если опции, задающие способ сравнения, указаны до ограничений на ключи сортировки, то они применяются глобально ко всем ключам. Если же соответствующие флаги ассоциированы с определенными ключами сортировки (см. ниже), они воздействуют только на "свои" ключи.

Полем называется минимальная последовательность символов, за которой следует разделитель полей или перевод строки. По умолчанию символом-разделителем считается пробел или символ табуляции. Пробелы и табуляции сразу вслед за разделителем (если они есть) принадлежат следующему полю. Все пробелы в начале строки входят в первое поле. На трактовку разделителей влияют следующие опции:

-b Игнорировать начальные пробелы при определении начала и конца ключей сортировки. Если опция -b указана перед первым аргументом +позиция_1, она действует на все ключи с наложенными ограничениями. Флаг b можно связать и с отдельными ключами сортировки (см. ниже).
-t sep Использовать заданный символ sep как разделитель полей. Разделитель не является частью поля (хотя и может входить в ключ сортировки). Каждое вхождение разделителя является значимым, то есть два рядом стоящих разделителя ограничивают пустое поле.

 

При наложении ограничения на ключ сортировки указывается позиция начала ключа (+позиция_1) и позиция сразу за концом ключа (-позиция_2). Если опция -позиция_2 отсутствует, ключ занимает весь остаток строки.

Позиция_1 и позиция_2 задаются как пара m.n, возможно, с последующими флагами bdfiMnr. Начальная позиция задается как +m.n, что означает (n+1)-ый символ в (m+1)-ом поле (поля и символы нумеруются с единицы). Отсутствие.n означает.0, то есть первый символ (m+1)-го поля. Если указан флаг b, то n отсчитывается от первого непробела в (m+1)-ом поле; +m.0b означает первый непробел в (m+1)-ом поле.

Позиция за концом ключа записывается как -m.n, что означает (n+1)-ый символ (включая разделители) после последнего символа m-го поля. Если.n опущено, то подразумевается.0, то есть разделитель после m-го поля. Если указан флаг b, то n отсчитывается от первого непробела в (m+1)-ом поле.

Если указано несколько ключей сортировки, то более поздние используются только в случае равенства более ранних. Если значения ключей сортировки двух строк совпадают, строки упорядочиваются с учетом всех символов.

 

uniq – удаляет дублирующиеся строки из отсортированного файла

uniq [-u] [-d] [-c] [-число_полей] [+число_символов]] [исходный_файл [выходной_файл]]

Команда uniq читает исходный_файл и сравнивает соседние строки. В обычном режиме вторая и последующие копии повторяющейся строки исключаются; остаток поступает в выходной_файл, который не должен совпадать с исходным, или на стандартный вывод. Для того чтобы повторяющиеся строки были обнаружены, они должны быть соседними. Поэтому команду uniq рекомендовано применять к файлу после использования команды sort.

Опции команды uniq:

-u Выдаются только неповторяющиеся строки исходного_файла.
-d Выдается одна копия только тех строк, которые имеют дубликаты.
Вывод в обычном режиме представляет собой объединение результатов, выдаваемых при наличии опций -u и -d.
-c --count Перед каждой строкой печатается, сколько раз она встретилась.
-f --skip-fields= n - n При сравнении игнорируются первые n полей, расположенных в начале каждой строки, вместе с предшествующими им пробелами. Поле определяется как цепочка символов, не являющихся пробелами и табуляциями, и отделенная от соседей пробелами и символами табуляции.
-s --skip-chars= n + n При сравнении игнорируются первые n символов, расположенных в начале каждой строки. Сначала отбрасываются поля, затем символы.
-i Игнорирует разницу между соответствующими буквами верхнего и нижнего регистров
     

 

cut - команда выборки отдельных полей из строк файла

cut [опции] [файл...]

Команда cut используется для выборки колонок из таблицы или полей из каждой строки файла. Поля, специфицированные списком, могут быть фиксированной длины, то есть расположенные как на перфокарте (опция -c), или переменной длины, изменяющейся от строки к строке; в этом случае границей поля является символ-разделитель, например, символ табуляции (опция -f). Команду можно использовать как фильтр: если не указано ни одного файла или задано имя - (дефис), используется стандартный ввод. Результат всегда поступает на стандартный вывод.

Опции команды cut:

-c список Список, следующий за -c (без пробела), специфицирует позиции символов (например, опция -c 1-72 задает первые 72 символа каждой строки).
-f список Список, следующий за -f (без пробела), является списком номеров полей; предполагается, что поля разделены в файле символом-разделителем (см. опцию -d); например, -f1,7 копирует только первое и седьмое поля. Если не задана опция -s, то строки, не содержащие разделителей, копируются в результат без всякой обработки (используется для ведения подзаголовков таблиц).
-b список Выводить только байты из позиций, указанных в списке. Символы Tab (табуляция) и Backspace (возврат на символ) трактуются подобно другим символам и занимают 1 байт.
-d символ Символ, следующий за -d (без пробела), является разделителем полей (только в случае опции -f). По умолчанию разделителем является символ табуляции. Пробел или другие символы, имеющие специальное значение, должны заключаться в кавычки.
-s Игнорировать строки без символов-разделителей в случае опции -f. Если опция не задана, то строки без разделителей копируются в результат без обработки.

Одна из опций –b, -c или -f должна быть задана обязательно.

Список состоит из одного или нескольких диапазонов, разделенных запятыми. Диапазон задается следующим образом:

- n – n-й байт, символ или поле, отсчитывается от 1;

- n- – от n-го байта, символа или поля до конца строки;

- n-m – от n-го до m-го байта, символа или поля (включительно);

- -m – от 1-го до m-го байта, символа или поля (включительно).

Список целых номеров полей указывается в возрастающем порядке, номера перечисляются через запятую; возможен символ - для указания интервалов; например, 1,4,7; 1-3,8; -5,10 (сокращение для 1-5,10); 3 (обозначение для интервала от 3 до последнего поля).

 

Для осуществления горизонтальной проекции содержимого файла по контексту используйте команду grep.

 

 


<== предыдущая лекция | следующая лекция ==>
Общий фильтр второго порядка | Определение передаточной характеристики аналогового нормированного ФНЧ по справочнику
Поделиться с друзьями:


Дата добавления: 2015-07-02; Просмотров: 303; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.