При работе в Linux мы часто сталкиваемся с чтением файлов конфигурации и других текстовых файлов, которые могут быть довольно объемными. В этой заметке мы рассмотрим, как выбрать из файлов, интересующую нас информацию.
Для извлечения информации из файлов мы воспользуемся возможностями команды cut
Извлекаем информацию из файлов конфигурации
Каждый файл конфигурации в Linux имеет свой определенный формат. Предположим, что нам мы работаем с файлом /etc/passwd. Это файл, в котором хранится информация обо всех пользовательских учетных записях в системе Linux.
Чтобы вывести файл на экран, выполним команду cat:
cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
...
В результате мы получим в командной строке полное содержимое файла /etc/passwd Информация о каждом пользователе выводится на отдельной строке в следующем формате:
имя:пароль:идентификатор:номер_группы:комментарий:директория:shell
Теперь, предположим, что мы хотим получить только список имен всех пользователей из файла /etc/passwd, без какой-либо дополнительной информации. То есть нам нужно извлечь из каждой строки файла имя пользователя. Для этого мы воспользуемся возможностями команды cut (не путать с командой cat).
Мы будем использовать две опции команды cut
- -d (или --delimiter=РАЗДЕЛИТЕЛЬ) — задает разделитель при обработке файла (по умолчанию используется символ табуляции).
- -f (или --fields=СПИСОК) — задает номера полей, которые нужно извлечь.
Выводим избранные поля из файла
Выведем только имена пользователей из файла /etc/passwd
cut -d: -f1 /etc/passwd
root
daemon
bin
sys
sync
games
...
- Мы использовали опцию -d:, чтобы указать в качестве разделителя символ двоеточия :
Это значит, что каждая строка файла разделяется на поля (части) по символу двоеточия. - Опция -f1 используется, чтобы выбрать в каждой строке первое поле.
Теперь выведем имена пользователей и их домашние директории. Для этого в списке полей добавим через запятую поле номер 6 (в нем выводится путь до домашней директории пользователя).
cut -d: -f1,6 /etc/passwd
...
avahi:/var/run/avahi-daemon
colord:/var/lib/colord
hplip:/var/run/hplip
gnome-initial-setup:/run/gnome-initial-setup/
gdm:/var/lib/gdm3
pingvinus:/home/pingvinus
systemd-coredump:/
Заключение
Команда cut обладает и другими возможностями по извлечению информации из файлов в командной строке Linux. Для просмотра справки по команде cut, выполните команду:
man cut
Комментарии