- Изучаем команды Linux: cut
- 1. Введение
- 2. Часто используемые опции
- 3. Использование списков
- 4. Выборка по символам
- 5. Выборка по байтам
- 6. Выборка по полям
- 7. Исключение данных с помощью complement
- Команда Cut в Linux с примерами
- Linux Cut Command with Examples
- В этом руководстве мы покажем вам, как использовать cut команду, на практических примерах и подробных объяснениях наиболее распространенных опций.
- Как использовать cut команду
- Как вырезать по полю
- Как резать на основе разделителя
- Как дополнить выбор
- Как указать выходной разделитель
- Как вырезать из байтов и символов
- Примеры
- Получить список всех пользователей
- Посмотреть 10 наиболее часто используемых команд
- Вывод
- Linux cut разделитель пробел
- Основные параметры
- Опция -с
- Опция -b
- Опция -f
- Опция -s
- Опция -n
- Опция —complement
- Команда cut и символы кириллицы
- Несколько слов о версиях
- Резюме программы cut
Изучаем команды Linux: cut
1. Введение
Если вы думаете, что можете администрировать Linux без использования команды cut, то вы совершенно правы. Однако владение этой очень простой утилитой командной строки даст вам определенные преимущества, так как позволит повысить эффективность своей работы. Проще говоря, cut — это одна из многих утилит для фильтрации текста, предлагаемых операционной системой Linux. Она фильтрует STDIN из другой команды или из файла и отправляет фильтрованный вывод в STDOUT.
2. Часто используемые опции
Давайте без долгих предисловий перейдем сразу к делу и изучим наиболее часто используемые опции командной строки.
-b, —bytes=LIST
выбрать из файла только заданные байты согласно списку
-c, —characters=LIST
выбрать из файла заданные символы согласно списку
-f, —fields=LIST
выбирает только поля, перечисленные в списке. Разделителем по умолчанию служит TAB. Значение по умолчанию может быть переопределено с помощью опции -d.
-d, —delimiter=DELIMITER
Позволяет задать разделитель полей. Как уже говорилось выше, значением по умолчанию является TAB, но эта опция позволяет переопределить его.
3. Использование списков
Список (list) в данном случае может состоять из одного или набора байтов, символов или полей. Например, для вывода только второго байта список будет включать единственное число 2.
Поэтому:
2 — будет выведен только второй байт, символ или поле, считая с первого.
2-5 — будут выведены все байты, символы и поля со второго по пятый.
-3 — будут выведены все байты, символы и поля до четвертого.
5- — будут выведены все байты, символы или поля, начиная с пятого.
1,3,6 — будут выведены только первый, третий и шестой байты, символы или поля.
1,3- — будут выведены первый и все байты, символы или поля, начиная с третьего.
4. Выборка по символам
Приведенные ниже примеры говорят сами за себя. Мы использовали опцию -c, чтобы выводить только заданный диапазон символов из файла cut.txt.
5. Выборка по байтам
Приницип работы опции -b (побайтно) похож на описанный выше для работы с символами. Мы знаем, что один символ имеет размер 1 байт, поэтому результат выполнения команды с опцией -b будет тот же самый.
cut.txt — это простой текстовый файл в кодировке ASCII. Различия будут заметны только при использовании многобайтных кодировок, таких как UTF-8 Unicode. Например:
6. Выборка по полям
Как уже говорилось ранее, поле, используемое командной cut по умолчанию — это TAB. Например, создадим файл, где общим разделителем является TAB.
Подсказка: если вы не знаете, как вставить TAB в командной строке, используйте комбинацию клавиш CTRL + V, перед тем, как нажать TAB.
В примере выше были выведены только второй и третий столбцы, потому что TAB является общим разделителем и в то же время используется командной cut как поле по умолчанию. Убедиться в том, что вы использовали TAB вместо пробела можно с помощью команды od:
Если необходимо переопределить поведение команды, чтобы использовать другой разделитель, имеется опция -d.
Классический пример, где нам необходимо использовать опцию -d, чтобы извлечь список пользователей текущей системы из файла /etc/passwd.
Необходимо отметить, что для получения единообразного вывода общий разделитель должен быть унифицирован по каждой строке ввода. Например, в следующем примере было бы сложно использовать пробел в качестве общего разделителя.
В этом случае было бы намного проще воспользоваться командой awk или sed, чтобы сначала заменить множественные пробелы на единый разделитель, например запятую.
7. Исключение данных с помощью complement
Команда cut позволяет вам выборочно включать требуемые данные в вывод. В случае, если вам необходимо выбрать данные для их исключения из вывода, очень полезна опция complement.
Пример:
Источник
Команда Cut в Linux с примерами
Linux Cut Command with Examples
В этом руководстве мы покажем вам, как использовать cut команду, на практических примерах и подробных объяснениях наиболее распространенных опций.
В системах Linux и Unix доступно множество утилит, позволяющих обрабатывать и фильтровать текстовые файлы. cut утилита командной строки, которая позволяет вырезать части строк из указанных файлов или данных по конвейеру и выводить результат в стандартный вывод. Его можно использовать для вырезания частей строки по разделителю, позиции байта и символу.
Как использовать cut команду
Синтаксис cut команды следующий:
Параметры, указывающие cut , использовать ли разделитель, позицию байта или символ при вырезании выделенных частей, выглядят следующим образом:
- -f ( —fields=LIST ) — Выберите, указав поле, набор полей или диапазон полей. Это наиболее часто используемый вариант.
- -b ( —bytes=LIST ) — Выберите, указав байт, набор байтов или диапазон байтов.
- -c ( —characters=LIST ) — Выберите, указав символ, набор символов или диапазон символов.
Вы можете использовать один и только один из вариантов, перечисленных выше.
- -d ( —delimiter ) — Укажите разделитель, который будет использоваться вместо разделителя «TAB» по умолчанию.
- —complement — дополнить выбор. При использовании этого параметра cut отображаются все байты, символы или поля, кроме выбранного.
- -s ( —only-delimited ) — по умолчанию cut печатает строки, которые не содержат символов-разделителей. Когда эта опция используется, cut не печатать строки, не содержащие разделителей.
- —output-delimiter — По умолчанию cut используется входной разделитель в качестве выходного разделителя. Эта опция позволяет вам указать другую строку выходного разделителя.
Команда cut может принимать ноль или более входных имен FILE. Если не FILE указано, или когда FILE есть — , cut будет читать со стандартного ввода.
LIST Аргумент , переданный -f , -b и -c варианты могут быть целым числом, несколько целых чисел , разделенных запятыми, диапазон целых чисел или нескольких диапазонов целочисленных разделенных запятыми. Каждый диапазон может быть одним из следующих:
- N N-е поле, байт или символ, начиная с 1.
- N- от N-го поля, байта или символа до конца строки.
- N-M от N-го до M-го поля, байта или символа.
- -M от первого до M-го поля, байта или символа.
Как вырезать по полю
Чтобы указать поля, которые должны быть вырезаны, вызовите команду с -f опцией. Если не указан, по умолчанию используется разделитель «TAB».
В приведенных ниже примерах мы будем использовать следующий файл. Поля разделены вкладками.
Например, для отображения 1-го и 3-го полей вы должны использовать:
Или, если вы хотите отобразить с 1-го по 4-е поле:
Как резать на основе разделителя
Чтобы вырезать на основе разделителя, вызовите команду с -d параметром, а затем разделитель, который вы хотите использовать.
Например, чтобы отобразить 1-е и 3-е поля, используя «:» в качестве разделителя, введите:
Вы можете использовать любой отдельный символ в качестве разделителя. В следующем примере мы используем символ пробела в качестве разделителя и печатаем 2-е поле:
Как дополнить выбор
Для дополнения списка полей выбора используйте —complement опцию. Это напечатает только те поля, которые не выбраны с -f опцией.
Следующая команда напечатает все поля кроме 1-го и 3-го:
Как указать выходной разделитель
Чтобы указать выходной разделитель, используйте —output-delimiter опцию. Например, чтобы установить для _ вас выходной разделитель , используйте:
Как вырезать из байтов и символов
Прежде чем идти дальше, давайте сделаем различие между байтами и символами.
Один байт составляет 8 битов и может представлять 256 различных значений. Когда был установлен стандарт ASCII, в нем были учтены все буквы, цифры и символы, необходимые для работы с английским языком. Таблица символов ASCII имеет 128 символов, и каждый символ представлен одним байтом. Когда компьютеры стали доступны во всем мире, технологические компании начали вводить новые кодировки символов для разных языков. Для языков, содержащих более 256 символов, простое сопоставление 1 к 1 было невозможно. Это приводит к различным проблемам, таким как совместное использование документов или просмотр веб-сайтов, и был необходим новый стандарт Unicode, который может работать с большинством мировых систем письма. UTF-8 был создан для решения этих проблем. В UTF-8 не все символы представлены 1 байтом. Символы могут быть представлены от 1 байта до 4 байтов.
Опция -b ( —bytes ) указывает команде вырезать секции из каждой строки, заданной заданными позициями байтов.
В следующих примерах мы используем ü символ, который занимает 2 байта.
Выберите 5-й байт:
Выберите 5-й, 9-й и 13-й байты:
Выберите диапазон от 1-го до 5-го байта:
На момент написания этой статьи версия пакета cut в GNU coreutils не имела возможности обрезать по символам. При использовании -c параметра cut ведет себя так же, как при использовании -b параметра.
Примеры
Команда cut обычно используется в сочетании с другими командами через трубопровод. Вот несколько примеров:
Получить список всех пользователей
Выходные данные getent passwd команды передаются в cut , который печатает 1-е поле, используя в : качестве разделителя.
Посмотреть 10 наиболее часто используемых команд
В следующем примере cut используется для удаления первых 8 байтов из каждой строки history вывода команды.
Вывод
cut Команда используется для отображения выбранных полей из каждой строки заданных файлов или стандартного ввода.
Хотя это очень полезно, cut имеет некоторые ограничения. Он не поддерживает указание более одного символа в качестве разделителя и не поддерживает несколько разделителей.
Источник
Linux cut разделитель пробел
Команда cut позволяет выбрать из каждой строки файла нужную часть (по единому правилу для всех строк) и показать выборку на экране дисплея.
Команда имеет три основные опции:
- -b — когда объектом выбора являются байты;
- -с — когда объектом выбора являются символы;
- -f — когда объектом выбора являются элементы форматирования текста (колонки, столбцы и прочее).
Внимание: Опции -c, -b, и -f могут употребляться только поодиночке.
Основные параметры
Опция -с
Например, возьмем файл /etc/shells, в целом виде он выглядит так:
Теперь применим команду:
В данном примере опция -c означает, что объектом выбора будут символы, цифры 1 и 5 означают, что мы выбираем первый и пятый символы строки (счет идет с 1), а все остальное содержимое файла игнорируется.
Можно выбирать символы не по порядковым номерам, а диапазонами:
В этом случае мы выбрали символы в диапазоне с 1 по 5 (включительно).
Можно указать несколько диапазонов через запятую:
Первые три примера имеют чисто демонстрационный характер и не имеют практического смысла. Следующий пример может претендовать на некий смысл:
Тут мы получили список доступных в системе шеллов. Для этого мы не стали указывать правую границу диапазона, что заставляет команду выдавать все содержимое строк от указанного символа до конца строки. Можно оставить прочерк с левой стороны, тогда выборка пойдет от начала строки до указанного символа.
Надеюсь, что с опцией -c ясность полная, можно переходить к следующей.
Опция -b
Весьма похожа на предыдущую опцию, как по способу задания выборки байт, так и по результатам, ведь в большинстве случаев один байт определяет один символ.
Мы выбрали первые 6 байт из каждой строки файла /etc/shells.
Точно так же как и с опцией -с, можно использовать способы выборки n,m; -n; и n-. Остается лишь добавить, что символы табуляции и backspace (возврат назад на один символ с удалением его) трактуются как любой другой символ — они и занимают один байт. (Не поручусь за национальные кодировки).
Опция -f
Объектом выбора данной опции являются те самые загадочные «поля», которые так смущают в мане программы. Оказалось все просто. Выбираем мы колонки текста, или столбцы, или что еще там, разделенные знаком табуляции. Так как я таких файлов никогда не встречал, то пришлось создать специально для опытов. Вот содержимое файла tab.txt:
Все как ожидалось, выбраны две первые колонки. Еще пример:
В общем понятно, схема та же, только с колонками. Вопрос в другом — где взять такие файлы с колонками, разделенными знаком табуляции, чтобы их обрабатывать?
К счастью, есть опция -d, предназначенная для работы в паре с опцией -f и понимающая другие разделители текста, кроме знаков табуляции. В директории /etc полно файлов, содержащих столбцы данных, разделенных всякими разделителями; беда только, что они довольно длинные для примеров. Я возьму первые десять строчек из файла /etc/group и создам файл group10.txt.
В этом примере, опция -f приказывает отбирать все столбцы, с первого до последнего, а опция -d указывает на символ, являющийся разделителем -d : разделителем служит двоеточие. Выше на экране файл group10.txt полностью.
А сейчас мы отобрали первый и третий столбцы, то есть узнали идентификационный номер каждой группы. В остальном все те же правила выбора объекта, что и для прочих опций. Символы, разделяющие столбцы, разумеется, могут быть иными, нежели двоеточие. Их нужно задавать при помощи опции -d . Есть и более наглядный способ употребления опции -d. Вместо только что описанной конструкции (-d ) пишем —delim= , это кажется более надежным, чем при помощи пробела.
Небольшая хитрость. Во многих файлах символом разделения служит пробел, или несколько пробелов подряд (например файл /etc/fstab). Чтобы указать разделитель для таких файлов, нужно заключить пробел в кавычки (одинарные или двойные); только тогда програма поймет, что разделителем служит пробел:
Как указать разделителем несколько пробелов, осталось неизвестным.
Опция -s
Опция -s употребляется с опцией -f и приказывает не выводить на экран строки, не содержащие символов-разделителей. Ясно даже мне.
Опция -n
Опция -n употребляется вместе с опцией -b (когда объектом выборки являются байты). Эта опция пишется первой и запрещает команде разбивать многобайтные символы. Другими словами, если символ записывается более чем одним байтом, и мы, указывая выборку, случайно попадем на такой многобайтный символ, то в выводе программы появятся вопросительные знаки, либо квадратики, свидетельствующие о том, что программа не до конца считала этот символ и не знает как его интерпретировать. Например:
(Символы кириллицы в кодировке UTF-8 состоят из 2 байтов). Стоит добавить опцию -n, как команда перестанет пытаться читать часть многобайтного символа:
Опция —complement
Встречается в версиях команды cut от GNU Coreutils. Но редко встречается в манах. Опция употребляется совместно с опциями -b, -c и -f. Эта опция дополнит выборку всеми остальными объектами выбора. Другими словами, те объекты, которые вы укажете, не появятся в выводе команды, зато все остальные — появятся. Например:
Указанный первый столбец не появился, зато остальные два оказались в выводе команды. Опция очень удобна, когда у вас множество столбцов или колонок текста, а вам нужно распечатать их все, за исключением одной-двух-трех.
Опции —help и —version общеизвестны, и задерживаться на них я не буду.
Команда cut и символы кириллицы
Некоторые новейшие версии программы cut, в некоторых дистрибутивах, неплохо справляются с кириллическими символами. Другие версии, в других дистрибутивах не справляются вовсе. Я было попытался дать несколько примеров с кириллицей, но результаты на разных машинах, на разных дистрибутивах, и с разными версиями команды могли только сбить читателя с толку, не внеся никакой ясности. Поэтому общие рекомендации: не бойтесь пробовать работать с родным языком, если не получается, обновите версию программы, не выходит — попробуйте дистрибутив с другой кодировкой по умолчанию.
Несколько слов о версиях
В Линукс дистрибутивах в основном встречается команда cut от GNU Coreutils. Программа разрабатывается и новые версии появляются регулярно. Советую иметь новейшую стабильную версию. Мне попадались версии не первой свежести, которые откровенно «глючили» и не различали, скажем, опций -b и -c (cut (GNU coreutils) 5.97), а я-то думал, что так и надо. Поэтому при первом подозрении попробуйте другой дистрибутив (или LiveCD).
Резюме программы cut
Программа применима и эффективно работает с регулярными файлами, те есть с файлами, где из строчки в строчку повторяется некая структура информации (всякого рода списки, перечни, распечатки и прочее). Трудно представить себе, как ее можно использовать с обычным текстом, не разбитым на строки. Наличие трех подходов (байты, символы и столбцы) к определению выборки позволяют добиться успеха почти в любом случае, не одним способом, так другим. Особенно полезной может быть команда в качестве фильтра в составе программных каналов (pipes).
Источник