Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
UNIX.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
10.6 Mб
Скачать

Сценарий: Быстрый анализ текстов

В данном сценарии изучаются команды, которые позволяют провести первичный анализ файла: с чего он начинается, как заканчивается и каков его размер.

Начальные условия: Командная строка.

  1. Получить число строк в файле /etc/passwd с помощью команды wc -l /etc/passwd :

  2. user@desktop test $ wc -l /etc/passwd

44 /etc/passwd

  1. Или другим способом: посчитав число слов в созданном ранее файле users с помощью команды cat users | wc -w:

  2. user@desktop test $ cat users | wc -w

44

  1. Посмотеть первые несколько строк длинного файла с помощью команды head logs/Xorg.0.log:

  2. user@desktop test $ head logs/Xorg.0.log

  3. X Window System Version 6.8.2

  4. Release Date: 9 February 2005

  5. X Protocol Version 11, Revision 0, Release 6.8.2

  6. Build Operating System: Linux 2.6.13-gentoo i686 [ELF]

  7. Current Operating System: Linux thinkpad 2.6.13-gentoo #1 Wed Sep 7 01:03:14 MSD 2005 i686

  8. Build Date: 08 October 2005

  9. Before reporting problems, check http://wiki.X.Org

  10. to make sure that you have the latest version.

Module Loader present

  1. Аналогично, посмотеть последние несколько строк с помощью команды tail logs/Xorg.0.log:

  2. user@desktop test $ tail logs/Xorg.0.log

  3. (II) RADEON(0): [RESUME] Attempting to re-init Radeon hardware.

  4. (II) RADEON(0): [agp] Mode 0x1f000201 [AGP 0x8086/0x3340; Card 0x1002/0x4c66]

  5. (II) Mouse1: ps2EnableDataReporting: succeeded

  6. SetClientVersion: 0 8

  7. SetGrabKeysState - disabled

  8. SetGrabKeysState - enabled

  9. (II) 3rd Button detected: disabling emulate3Button

  10. SetClientVersion: 0 8

  11. SetGrabKeysState - disabled

SetGrabKeysState - enabled

Это бывает полезно при просмотре системных журналов — в них самые последние события содержатся в конце файлов.

Сценарий: Поиск строк по регулярным выражениям

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

Начальные условия: Командная строка. Каталог test/log с найденными системными журналами.

  1. Среди найденных системных журналов посмотреть файл журнала загрузки графичской системы XFree86.0.log с помощью команды less test/log/XFree86.0.log:

user@desktop ~ $ less test/log/XFree86.0.log

Выйти из просмоторщика можно нажатием клавиши q.

  1. Найти все предупреждения в журнале: строка, начинающаяся с «(WW)». Для этого ввести команду grep "^(WW)" test/log/XFree86.0.log:

  2. user@desktop ~ $ grep "^(WW)" test/log/XFree86.0.log

  3. (WW) The directory "/usr/share/fonts/freefonts/" does not exist.

  4. (WW) The directory "/usr/share/fonts/unifont/" does not exist.

  5. (WW) The directory "/usr/share/fonts/artwiz/" does not exist.

...

  1. Получить все строки, содержащие следующий шаблон: последовательность из 1 или более цифры или буквы, затем символ собаки, затем еще одна последовательность 1 или более цифры или буквы или точки, затем символ точки, затем от двух до четырёх букв (имя домена первого уровня). Также служебный вывод ошибок удаляется (перенаправляется в нулевое устройство). Для этого ввести команду grep "[a-zA-z0-9]\+@[a-zA-z0-9\.]\+\.[a-z]\{2,4\}" /etc/* 2>/dev/null:

  2. user@desktop ~ $ grep "[a-zA-z0-9]\+@[a-zA-z0-9\.]\+\.[a-z]\{2,4\}" /etc/* 2>/dev/null

  3. /etc/devfsd.conf:# Richard Gooch <rgooch@atnf.csiro.au> 3-JUL-2000

  4. /etc/inittab:# Author: Miquel van Smoorenburg, <miquels@cistron.nl>

  5. /etc/inittab:# Modified by: Patrick J. Volkerding, <volkerdi@ftp.cdrom.com>

...

При работе с несколькими файлами grep по умолчанию использует вывод имени файла перед найденной стокой.

  1. Избавиться от имени файла в начале строки с помощью ключа -h. Ввести команду grep -h "[a-zA-z0-9]\+@[a-zA-z0-9\.]\+\.[a-z]\{2,4\}" /etc/* 2>/dev/null:

  2. user@desktop ~ $ grep -h "[a-zA-z0-9]\+@[a-zA-z0-9\.]\+\.[a-z]\{2,4\}" /etc/* 2>/dev/null

  3. # Richard Gooch <rgooch@atnf.csiro.au> 3-JUL-2000

  4. # Author: Miquel van Smoorenburg, <miquels@cistron.nl>

  5. # Modified by: Patrick J. Volkerding, <volkerdi@ftp.cdrom.com>

...

  1. Для вывода только найденной подстроки используется ключ -o. Ввести команду grep -ho "[a-zA-Z0-9]\+@[a-zA-Z0-9\.]\+\.[a-z]\{2,4\}" /etc/* 2>/dev/null:

  2. user@desktop ~ $ grep -ho "[a-zA-Z0-9]\+@[a-zA-Z0-9\.]\+\.[a-z]\{2,4\}" /etc/* 2>/dev/null

  3. rgooch@atnf.csiro.au

  4. miquels@cistron.nl

  5. volkerdi@ftp.cdrom.com

...

  1. Получить все файлы каталога /etc/ с помощью команды find /etc -type f 2>/dev/null, игнорируя ошибки:

  2. user@desktop ~ $ find /etc -type f 2>/dev/null

  3. /etc/X11/xorg.conf.example

  4. /etc/X11/Sessions/kde-3.4

  5. /etc/X11/Sessions/Xsession

  6. /etc/X11/chooser.sh

...

  1. Для каждого из найденных файлов произвести поиск подстроки «nameserver». Для этого ввести команду find /etc -type f -exec grep "nameserver" {} \; 2>/dev/null:

  2. user@desktop ~ $ find /etc -type f -exec grep "nameserver" {} \; 2>/dev/null

  3. # merge the new nameservers with the other options from the old ...

  4. grep --invert-match '^nameserver[[:space:]]' $REALRESOLVCONF

  5. nameserver 10.22.10.20

...

  1. Для большего удобства добавить вывод имени файла (ключ -H) и номера строки (ключ -n), на которой было найдено совпадение, с помощью команды find /etc -type f -exec grep -Hn "nameserver" {} \; 2>/dev/null:

  2. user@desktop ~ $ find /etc -type f -exec grep -Hn "nameserver" {} \; 2>/dev/null

  3. /etc/ppp/ip-up:24: # merge the new nameservers with the other optio...

  4. /etc/ppp/ip-up:26: grep --invert-match '^nameserver[[:space...

  5. /etc/ppp/resolv.conf:1:nameserver 10.22.10.20

...

Таким образом, команда grep может эффективно использоваться вместе с командой find для нахождения информации в файлах.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]