5.11Фильтры - Руководство (man) 68

5.11Фильтры
Фильтры — это команды (либо программки), которые воспринимают входной поток данных, создают над ним некие преобразования и выдают итог на стандартный вывод (откуда его можно перенаправить куда-то еще по желанию юзера). К числу команд 5.11Фильтры - Руководство (man) 68- фильтров относятся уже упоминавшиеся выше команды cat, more, less, wc, cmp, diff, также последующие команды.

^ Таблица 6.4 Комманды фильтры

Команда

Короткое описание

grep, fgrep, egrep

Отыскивают во входном файле либо данных со стандартного ввода строчки, содержащие 5.11Фильтры - Руководство (man) 68 обозначенный шаблон, и выдают их на стандартный вывод

tr

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

comm

Ассоциирует два файла по строчкам и 5.11Фильтры - Руководство (man) 68 выдает на стандартный вывод 3 колонки: в одной— строчки, которые встречаются исключительно в 1 файле, во 2-ой— строчки, которые встречаются только во 2-ом файле: и в третьей— строчки, имеющиеся в обоих файлах

pr

Форматирует для печати 5.11Фильтры - Руководство (man) 68 текстовый файл либо содержимое стандартного ввода

sed

Строковый редактор, использующийся для выполнения неких преобразований над входным потоком данных (берется из файла либо со стандартного ввода)

Особенным фильтром является команда tee, которая "раздваивает" входной поток, с одной 5.11Фильтры - Руководство (man) 68 стороны направляя его на стандартный вывод, а с другой — в файл (имя которого вы должны задать). Просто созидать, что по собственному действию команда tee подобна оператору перенаправления 1>&file.

Способности фильтров можно значительно расширить 5.11Фильтры - Руководство (man) 68 за счет использования постоянных выражений, позволяющих организовать, к примеру, поиск по разным, часто очень сложным, шаблонам.

egrep -- то же самое, что и grep -E. Эта команда употребляет несколько отличающийся, расширенный 5.11Фильтры - Руководство (man) 68 набор постоянных выражений, что позволяет делать поиск более гибко.

fgrep -- то же самое, что и grep -F. Эта команда делает поиск строк знаков (не постоянных выражений), что несколько наращивает скорость поиска.

Утилита 5.11Фильтры - Руководство (man) 68 agrep имеет более широкие способности поиска ориентировочных совпадений. Эталон поиска может отличаться от отысканной строчки на обозначенное число знаков.

Для поиска по сжатым файлам следует использовать утилиты zgrep, zegrep либо zfgrep 5.11Фильтры - Руководство (man) 68. Они с фуррором могут употребляться и для не сжатых файлов, но в данном случае они уступают в скорости обыденным grep, egrep и fgrep. Они очень комфортны при выполнении поиска по смешенному набору файлов -- когда 5.11Фильтры - Руководство (man) 68 одни файлы сжаты, а другие нет.

Для поиска по bzip-файлам используйте bzgrep.

Команда look очень похожа на grep, и создана для поиска по "словарям" -- отсортированным файлам. По-умолчанию, поиск производится 5.11Фильтры - Руководство (man) 68 в файле /usr/dict/words, но может быть указан и другой словарь.
^ 6Shell как язык программирования
shell отлично себя указывает не только лишь в диалоге с юзером, да и как исполнитель сценариев, и 5.11Фильтры - Руководство (man) 68 как средство организации взаимодействия меж задачками в системе.

Начнем с того, что shell - настоящий язык программирования, при этом, как многие интерпретаторы, достаточно высочайшего уровня. Если задачка - разовая (нет требований по быстродействию, сопоставимости 5.11Фильтры - Руководство (man) 68 и переносимости) и довольно абстрактная (нет привязки к определенной сложной структуре данных), ее вероятнее всего можно решить, написав командный сценарий - программку на shell.
6.1Сценарий
В простом случае, скрипт -- это ни что 5.11Фильтры - Руководство (man) 68 другое, как обычный перечень команд системы, записанный в файл. Создание скриптов поможет сохранить ваше время и силы, которые тратятся на ввод последовательности команд каждый раз, когда нужно их выполнить.

Пример: Сценарий чистки лог 5.11Фильтры - Руководство (man) 68-файлов в /var/log

# cleanup

# Для работы сценария требуются права root. cd /var/log

cat /dev/null > messages cat /dev/null > wtmp

echo "Лог-файлы очищены."

Тут нет ничего необыкновенного, это обычная последовательность команд, которая может 5.11Фильтры - Руководство (man) 68 быть набрана в командной строке с консоли либо в xterm. Преимущество размещения последовательности команд в скрипте заключается в том, что вам не придется каждый раз набирать эту последовательность вручную. Не считая того 5.11Фильтры - Руководство (man) 68, скрипты просто могут быть изменены либо обобщены для различных применений.

Пример: Расширенная версия предшествующего сценария.

#!/bin/bash

# cleanup, version 2

# Для работы сценария требуются права root.

LOG_DIR=/var/log

ROOT_UID=0 # Только юзер 5.11Фильтры - Руководство (man) 68 с $UID 0 имеет привилегии root. LINES=50 # Количество сохраняемых строк по-умолчанию.

E_XCD=66 # Нереально поменять каталог? E_NOTROOT=67 # Признак отсутствия root-привилегий.

if [ "$UID" -ne "$ROOT_UID" ]

then

echo "Для работы сценария 5.11Фильтры - Руководство (man) 68 требуются права root." exit $E_NOTROOT

fi


if [ -n "$1" ]

# Проверка наличия аргумента командной строчки. then

lines=$1 else

lines=$LINES # Значение по-умолчанию, если число не задано в командной строке fi


# Stephane Chazelas предложил последующее,

#+ для проверки правильности 5.11Фильтры - Руководство (man) 68 аргумента, переданного из командной строчки,

#+ правда это довольно трудно для данного управления.

#

# E_WRONGARGS=65 # Не числовой аргумент

#

# case "$1" in

# "" ) lines=50;;

# *[!0-9]*) echo "Usage: `basename $0` file-to-cleanup"; exit $E_WRONGARGS;;

# * ) lines=$1;;

# esac

#

#* Конец проверки правильности аргумента


cd $LOG_DIR


if 5.11Фильтры - Руководство (man) 68 [ `pwd` != "$LOG_DIR" ] # либо if [ "$PWD" != "$LOG_DIR" ]

# Не в /var/log?

then

echo "Нереально перейти в каталог $LOG_DIR." exit $E_XCD

fi # Проверка каталога перед чисткой лог-файлов.


# более действенный 5.11Фильтры - Руководство (man) 68 вариант:

#

# cd /var/log || {

# echo "Нереально перейти в требуемый каталог." >&2

# exit $E_XCD;

# }

tail -$lines messages > mesg.temp # Сохранить последние строчки в лог-файле. mv mesg.temp messages


# cat /dev/null > messages

#* Необходимость этой команды отпала 5.11Фильтры - Руководство (man) 68, так как чистка производится выше.


cat /dev/null > wtmp # команды ': > wtmp' и '> wtmp' имеют тот же эффект. echo "Лог-файлы очищены."


exit 0

# Возвращаемое значение 0

#+ показывает на успешное окончание работы сценария.

Если 5.11Фильтры - Руководство (man) 68 вы не желаете вполне вычищать системные логи, то выше представлена усовершенствованная версия предшествующего сценария. Тут сохраняются последние несколько строк (по-умолчанию -- 50).

Sha-bang

Если файл сценария начинается с последовательности #!, которая в мире 5.11Фильтры - Руководство (man) 68 UNIX именуется sha-bang, то это показывает системе какой интерпретатор следует использовать для выполнения сценария. Это двухбайтовая последовательность, либо -- особый маркер, определяющий тип сценария, в этом случае -- сценарий командной оболочки (см. man magic 5.11Фильтры - Руководство (man) 68). Более точно, sha-bang определяет интерпретатор, который вызывается для выполнения сценария, это может быть командная оболочка (shell), другой интерпретатор либо утилита.

Примеры sha-bang

#!/bin/sh

#!/bin/bash

#!/usr/bin/perl

#!/usr/bin/tcl

#!/bin/sed -f

#!/usr/awk 5.11Фильтры - Руководство (man) 68 -f


5-uchebno-tematicheskij-plan-kursa-uchebno-metodicheskij-kompleks-po-discipline-kriminologiya-dlya-napravleniya-bakalavr.html
5-udostoverenie-legalizaciya-dokumentov-dlya-zarubezhnogo-primeneniya-mezhdunarodnoe-ekonomicheskoe-pravo-i-process.html
5-upravlenie-kursom-metodicheskoe-posobie-po-rabote-s-eor-v-srede-moodle-rukovodstvo-dlya-prepodavatelya.html