Обложка канала

ServerAdmin.ru

12437 @srv_admin

Авторская информация о системном администрировании.

ServerAdmin.ru

4 года назад
Открыть в
​​Расскажу про небольшую утилиту командной строки Linux, которая может быть полезна при написании скриптов, либо обработке каких-либо файлов. Речь пройдёт про утилиту cut. У неё не так много параметров, что позволяет её успешно использовать, не ужасаясь возможностям, которые непременно придётся вспоминать или гуглить. Как это обычно у меня бывает, к примеру, с awk или sed. Cut позволяет выделять фрагменты текстовой строки. Я чаще всего использую два параметра -d и -f. Первый указывает символ разделитель слов в строке, а второй - номера фрагментов, которые нужно вывести. Чтобы быстро понять принцип работы, приведу условный пример с простой строкой: # echo "dima,vova,vasya,peter,sergey" | cut -d ',' -f 2,4 vova,peter Я указал, что разделитель запятая и вывел 2 и 4 слово. В общем случае выводить отдельные столбцы удобнее через awk, но только в том случае, когда они чётко разделены между собой пробелами. Вот эти две команды будут равнозначны, но как по мне awk проще и нагляднее: # echo "dima vova vasya peter sergey" | cut -d ' ' -f 2,4 # echo "dima vova vasya peter sergey" | awk '{print $2,$4}' vova peter Если же используется какой-то другой символ в качестве разделителя, команда cut очень удобна. Например, если надо как-то обработать файл /etc/passwd, что бывает не редко. Там значения разделены двоеточиями. Выведем имена пользователей и оболочку, которую они используют: # cut -d ':' -f 1,7 /etc/passwd root:/bin/bash bin:/sbin/nologin Либо просто выводим пользователей системы: # cut -d ':' -f 1 /etc/passwd Иногда бывает нужно заменить выходной разделитель на какой-то другой символ. Например, пробел. Делается это так: # cut -d ':' -f 1,7 /etc/passwd --output-delimiter='_' root /bin/bash bin /sbin/nologin Ещё одна полезная возможность команды cut - обрезать какой-то символ в строке. При этом можно задать, начиная с какого символа мы будет отображать информацию. Это актуально для файлов или списков, где в начале строки есть какие-то лишние символы, которые надо убрать. Например, если в терминале посмотреть список history, то видно, что само название команды начинается только с 8-го символа. До этого идут пробелы и порядковый номер команды в списке истории. Можно всё это вырезать и отобразить только команду: # history | grep git | cut -c8- Таким образом очень просто составить список наиболее популярных команд: # history | cut -c8- | sort | uniq -c | sort -rn | head С помощью cut в скриптах часто проверяют версию ядра, разрядность, тип процессора и т.д.: # uname -a | cut -d " " -f 3 4.18.0-240.8.1.el8_3.x86_64 # uname -a | cut -d " " -f 12 x86_64 # cat /proc/cpuinfo | grep "name" | cut -d : -f2 | uniq  Intel(R) Core(TM) i5-2500K CPU @ 3.30GHz #bash #terminal