Семинар №2. Практическое занятие. Часть 1. Как выделять информацию, разбитую на части с помощью специального символа-разделителя

1.

СЕМИНАР № 2

2.

ПРАКТИЧЕСКОЕ
ЗАНЯТИЕ
ЧАСТЬ 1

3.

ИЗУЧИМ, КАК ВЫДЕЛЯТЬ ИНФОРМАЦИЮ,
РАЗБИТУЮ НА ЧАСТИ С ПОМОЩЬЮ
СПЕЦИАЛЬНОГО СИМВОЛА-РАЗДЕЛИТЕЛЯ
(НАПРИМЕР, ПРОБЕЛА ИЛИ СИМВОЛА :), ИЗ
ФАЙЛОВ И СОЗДАВАТЬ НОВЫЕ
СТРУКТУРИРОВАННЫЕ ФАЙЛЫ.

4.

■ Команда cat имеет следующий фоpмат:
cat [-benstuv] [-] [file1 [file2 ...]]
Она по очеpеди читает указанные, как аpгументы файлы и выводит
их содеpжимое на стандаpтное устpойство вывода.

5.

■ Файл или файлы выводятся
последовательно один за дpугим
без пpомежутков.
■ Если файл достаточно длинный, то
можно пpиостановить вывод с
помощью комбинации клавиш CtrlS.
■ Для пpодолжения вывода нажмите
любую клавишу. Окончание ввода
производится комбинацией Ctrl-D.

6.

■ Файл или файлы выводятся
последовательно один за дpугим
без пpомежутков.
■ Если файл достаточно длинный, то
можно пpиостановить вывод с
помощью комбинации клавиш CtrlS.
■ Для пpодолжения вывода нажмите
любую клавишу. Окончание ввода
производится комбинацией Ctrl-D.

7.

cut
■ Команда позволяет выводить указанные столбцы или записи из одного или
нескольких файлов. Столбцом называется именно столбец – символы с одной и той
же позицией в строке, записи же разделяются символами табуляции. И столбцы и
записи задаются указанием их порядкового номера в строке.
Вы можете использовать следующие опции:
■ -c список
Вывод столбцов, указанных аргументом список;
■ -f список
вывод полей, указанных аргументом список;
■ -d символ
устанавливает заданный символ в качестве разделителя полей при использовании
параметра -f. Если в качестве разделителя используется небукверрый символ
(например, пробел), он должен быть заключён в кавычки.

8.

Примеры работы программы:
Выделение первых семи столбцов файла:
user@desktop ~ $ cat phones.txt
1234567
Борис Петрович
5557845
Анна Иоановна
...
user@desktop ~ $ cut -c1-7 phones.txt
1234567
5557845
...
Получение списка групп пользователей, зарегистрированных в системе:
user@desktop ~ $ cut -f1 -d: /etc/group
root
bin
daemon
sys
adm
...

9.

Разрезание и склеивание файлов
■ 1. Посмотрим содержимое файла /etc/passwd, в котором содержится
информация о пользователях системы, с помощью команды cat /etc/passwd:
Примерный результат:
user@desktop test $ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/bin/false
daemon:x:2:2:daemon:/sbin:/bin/false
adm:x:3:4:adm:/var/adm:/bin/false
lp:x:4:7:lp:/var/spool/lpd:/bin/false
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
Каждая строка хранит запись об отдельном пользователе. Запись состоит из полей, разделённых символом «:»

10.

sort
Команда sort сортирует строки, входящие во все исходные файлы, и выдает результат на
стандартный вывод. Если имена файлов не указаны, или в качестве файла указан «-»,
исходная информация поступает со стандартного ввода. Команда имеет формат:
sort [-c] [-r] [файл ...]
При упорядочении используется один или несколько ключей сортировки, выделяемых из
каждой вводимой строки. По умолчанию ключ сортировки один – вся строка.
Вот оcновные опции команды:
■ -c
Вместо сортировки файла проверяет, отсортирован ли он. Если файл не отсортирован,
команда возвращает 1 и выводит соответствующее сообщение.
■ -r
Заменить результат сравнения на противоположный.

11.

uniq
Команда uniq построчно анализирует файл и в случае, если он содержит в себе
повторяющиеся строки, выбрасывает дубликаты. Команда имеет следующий формат:
uniq [-c] [исходный_файл]
Если имя исходного файла не указано, команда читает данные со стандартного ввода.
В качестве параметра может быть указано -c, тогда рядом с каждой строкой будет
выведено число повторений этой строки.

12.

Разрезание и склеивание файлов
■ 2. Выделим первый столбец в каждой записи, установив разделитель в «:», с
помощью команды cat /etc/passwd | cut -f1 -d: :
Примерный результат:
user@desktop test $ cat /etc/passwd | cut -f1 -d:
root
bin
daemon
adm
lp
sync
shutdown

13.

Разрезание и склеивание файлов
■ 3. Отсортируем список пользователей по алфавиту с помощью команды
cat /etc/passwd | cut -f1 -d: | sort :
Примерный результат:
user@desktop test $ cat /etc/passwd | cut -f1 -d: | sort
adm
alias
apache
at
bin
cron
cyrus

14.

Разрезание и склеивание файлов
■ 4. Выделим седьмой столбец в каждой записи, соответствующий командной оболочке
пользователя, с помощью команды cat /etc/passwd | cut -f7 –d :
Примерный результат:
user@desktop test $ cat /etc/passwd | cut -f7 -d:
/bin/bash
/bin/false
/bin/false
/bin/false
/bin/false
/bin/sync
Список содержит много повторяющихся строк.

15.

Разрезание и склеивание файлов
■ 5. Удалим повторяющиеся строки командой cat /etc/passwd | cut -f7 -d: | uniq
:
Примерный результат:
user@desktop test $ cat /etc/passwd | cut -f7 -d: | uniq
/bin/bash
/bin/false
/bin/sync
/sbin/shutdown
/sbin/halt
/bin/false
Некоторые повторяющиеся строки остались, так как сравниваются только последовательные строки.

16.

Разрезание и склеивание файлов
■ 6. Добьемся полной уникальности, предварительно отсортировав строки с помощью
команды sort. Ввести команду cat /etc/passwd | cut -f7 -d: | sort | uniq :
Примерный результат:
user@desktop test $ cat /etc/passwd | cut -f7 -d: |
sort | uniq
/bin/bash
/bin/false
/bin/sync
/dev/null
/sbin/halt
/sbin/shutdown

17.

Разрезание и склеивание файлов
■ 7. Выделить первый и седьмой столбец файла /etc/passwd в отдельные файлы.
Для этого ввести команды cat /etc/passwd | cut -f1 -d: > users и cat /etc/passwd |
cut -f7 -d: > shells :
Примерный результат:
user@desktop test $ cat /etc/passwd | cut -f1 -d: > users
user@desktop test $ cat /etc/passwd | cut -f7 -d: > shells

18.

Разрезание и склеивание файлов
■ 8. Объединить результаты с помощью команды paste users shells:
Примерный результат:
user@desktop test $ paste users shells
root /bin/bash
bin /bin/false
daemon /bin/false
adm /bin/false
lp /bin/false
sync /bin/sync

19.

Разрезание и склеивание файлов
paste
■ Команда paste объединяет два текстовых файла в один. В
получившемся файле исходные строки располагаются в соседних
столбцах, разделённые символом табуляции (или любым другим
символом, указанным через параметр -d).
■ Часто применяется совместно с программой cut.
English     Русский Правила