Cut

Программа cut выбирает столбцы из каждой строки структурированных текстовых файлов.

cut [параметры] [файл]...

Если при вызове программы не указывается файл, cut берет данные со стандартного ввода.

Программа может выбирать информацию как по символам, так и по столбцам. В первом случае следует использовать параметр –c, во втором параметр –f.

По умолчанию символом разделителем полей считается символ табуляции. Если в файле использовался другой символ разделитель, при вызове cut необходимо явно передавать параметр –d с указанием символа разделителя в файле. Например, нам необходимо получить только первые десять символов в каждой строке выдаваемой программой ls с опцией –l (права доступа к файлам). Тогда выполняемая команда будет выглядеть следующим образом:

$ ls -l | cut -c 1-10
итого 4710
-rw-------
-rw-r--r--
-rw-r--r--
-rw-r--r--
-rw-r--r--
-rw-r--r--
$

1-10 — это диапазон символов, которые необходимо оставить в каждой строке. Можно использовать различные варианты записи диапазона. Например:

$ ls -l | cut -c -15
итого 47104
-rw-------  1 a
-rw-r--r--  1 a
-rw-r--r--  1 a
-rw-r--r--  1 a
-rw-r--r--  1 a
-rw-------  1 a
drwxr-xr-x  2 a
$

Если не указана начальная позиция, значит данные берутся с начала строки. Если не указать последнюю позицию, то до конца строки:

$ ls -l | cut -c 15-
artur users    56648 2003-06-21 09:44 checkinstall-1.5.3-81.tgz
artur users  3347423 2005-01-27 11:27 clamav-0.81.tar.gz
artur users      255 2005-01-13 00:51 packages.html
artur users   736882 2004-11-19 20:37 SE_VGA_EN\ -\ ARMV4.exe
artur ftp       5510 2004-11-14 12:16 vmware.sxw
artur users    56416 2004-04-19 19:27 vw_2002_maintenance.pdf
artur users     4096 2005-04-21 09:44 XServer_cygwin/
$

В предыдущих примерах cut брала данные со стандартного ввода, но в качестве источника данных можно использовать любой файл. Например, необходимо выбрать из файла /etc/passwd информацию о том, какая программа у пользователей будет запускаться при его входе в систему.

Логин пользователя — первое поле, программа — седьмое. Символ разделитель полей в файле passwd — двоеточие. Чтобы ограничить количество строк при выводе, посмотрим данные только по последним четырём пользователям.

$ cut -f 1,7 -d: /etc/passwd | tail -4
user13:/bin/bash
user14:/bin/bash
artur:/bin/bash
oldap:/bin/false
$

Как видно из примера, для того, чтобы cut обрабатывала поля, ей был передан параметр –f с указанием номеров полей. Мы не использовали диапазон, как это было в примере с параметром –c. Если необходимо указать конкретные поля или символы, их следует перечислить через запятую.

При помощи параметра –d мы явно определили символ разделитель полей. В нашем примере — это двоеточие.

Если в качестве разделителя необходимо использовать пробел, тогда параметр –d будет выглядеть следующим образом: –d ' '.