Команда cut позволяет выбрать из каждой строки файла нужную часть (по единому правилу для всех строк) и показать выборку на экране дисплея.

Команда имеет три основные опции:

-b - когда объектом выбора являются байты, похоже на -c, т.к. один символ занимает 1 байт;

- когда объектом выбора являются символы;

-f - когда объектом выбора являются элементы форматирования текста (колонки, столбцы и прочее).

Внимание: Опции -c, -b, и -f могут употребляться только поодиночке.

Все опции CUT

-b, --bytes=СПИСОК выводит только байты из позиций, указанных в СПИСКЕ. Символы (табуляции) и backspace (возврат на символ) трактуются подобно другим символам и занимают один байт.

-c, --characters=СПИСОК выводит только символы из позиций, указанных в СПИСКЕ. С одной стороны очень похожа на опцию -b, но в случае интернационализации может отличаться.

-d, --delimiter=РАЗДЕЛИТЕЛЬ задает РАЗДЕЛИТЕЛЬ колонок (полей) входного файла вместо символа табуляции. Применяется совместно с опцией-f.

-f, --fields=СПИСОК выводит только столбцы (поля), перечисленные в СПИСКЕ. По умолчанию столбцы разделяются символами табуляции. Если не задана опция -s, выводит любые строки, которые не содержат символ-разделитель.

-s, --only-delimited не выводит строки, в которых отсутствует разделитель полей. Применяется совместно с опцией -f.

-n не разбивает на части многобайтовые символы (игнорируется).

--output-delimiter=РАЗДЕЛИТЕЛЬ разделяет указанным РАЗДЕЛИТЕЛЕМ поля выходного потока. Применяется совместно с опцией

--complement инвертирует команду, например показывает все столбцы, кроме первого и т.д.

-f По умолчанию используется разделитель полей входного файла (потока). --help вывести справку о программе, её опциях и завершить работу. --version вывести информацию о версии программы и завершить работу.

 

Опция -c

-Показать только 1 и 5 символы строк файла /etc/shells:

# cut -c 1,5 /etc/shells

 

-Показать с 1 по 5 символы строк файла /etc/shells:

# cut -c 1-5 /etc/shells

 

-Показать с 1 по 5 и с 8 по 9 символы строк файла /etc/shells:

# cut -c 1-5,8-9 /etc/shells

 

-Отсечь первые 5 символов в каждой строке:

# cut -c 6- /etc/shells

 

Опция -f

Объектом выбора данной опции являются те самые загадочные "поля", выбираем мы колонки текста, или столбцы, разделенные знаком табуляции.

-Показать 1 и 2 столбцы:

# cut -f 1,2 /etc/shells

 

-Показать столбцы начиная со второго:

# cut -f 2- /etc/shells

 

Опция -d, предназначенная для работы в паре с опцией -f и понимающая другие разделители текста, кроме знаков табуляции.

-Показать все символы начиная с 2-го знака : в строке:

# cut -f 3- -d : group10.txt

 

-Показать символы ДО 1го и 3го знака запятой:

# cut -f1,3 -d, /etc/passwd

 

Опция -s

Опция -s употребляется с опцией -f и приказывает не выводить на экран строки, не содержащие символов-разделителей.

 

Опция -n

Опция -n употребляется вместе с опцией -b (когда объектом выборки являются байты). Эта опция пишется первой и запрещает команде разбивать многобайтные символы. (Символы кириллицы в кодировке UTF-8 состоят из 2 байтов). Стоит добавить опцию -n, как команда перестанет пытаться читать часть многобайтного символа:

# cut -n -b 1-5 rus.txt

 

Опция --complement Опция употребляется совместно с опциями -b, -c и -f.

-Показать все столбцы кроме первого:

# cut -f1 --complement tab.txt

 

Примеры:

-Показывает объем памяти текущей системы:

# free | grep Mem | sed 's/\s\+/,/g' | cut -d , -f2

-Возвращает тип CPU:

# cat /proc/cpuinfo | grep "name" | cut -d : -f2 | uniq

-Возвращает мой внешний IP-адрес:

# wget -q -O X http://ipchicken.com/
# grep '^ \{8\}[0-9]' X | sed 's/\s\+/,/g' | cut -d , -f2

-Извлекает список пользователей текущей системы:

# cut -d : -f 1 /etc/passwd

-Получает MAC-адрес моих сетевых интерфейсов:

# ifconfig eth0 | grep HWaddr | cut -d " " -f 11

-Вывод список пользователей, авторизованных в текущей системе:

# who | cut -d \s -f1

-Показывает, какая служба использует порт .:

# grep -w   /etc/services | cut -f 1 | uniq

 

Материалы:

http://aidalinux.ru/w/Cut

http://rus-linux.net/MyLDP/consol/cut.html