How to cut linux

Linux Cut Command with Practical Examples

The cut command is used in Linux and Unix systems to cut parts and sections from each line of a file and write the result to standard output. It can be used to cut parts of a line by byte position, character and field (delimiter).

In this tutorial, we learn Linux cut command with some practical examples you can use in your day to day command line activities.

Cut Command and Syntax

The basic syntax for the cut command is as follows:

Let’s check cut options and without any option cut command won’t work.

Cut Options

-f : Extract by specifying a field. Cut command uses ‘TAB’ as the default field delimiter.

-d : ‘Tab’ is the default delimiter and using this option you can use specific delimiter.

-b : To extract by specifying a byte. The range of bytes can also be specified.

-c : To cut by character. This can be a list of numbers separated comma or a range of numbers separated by a hyphen (-).

–complement : This will complement the selection

–output-delimiter : To change the output delimiter use the option -output-delimiter=’delimiter’.

—only-delimited : Cut will not print lines not containing delimiters

We will use the following text file named ‘content.txt’ and /etc/passwd file throughout this tutorial to illustrate our examples.

How to cut by delimiter

The most commonly used cut option is a combination of -d and -f . It will basically extract content based on specific delimiter and listed fields.

For example the following prints only the 1st field of each line from ‘/etc/passwd’ file using the delimiter (:).

The following example where we use space (» «) as delimiter and cut the 1st field from the file named ‘content.txt’.

This example, extracts more than one field from a specific file. Here we extract 1st and 6th field using colon (:) delimiter from the file ‘/etc/passwd’ which has the string ‘/bin/bash’:

To display the range of fields, specify start field and end field separated by hypen (-) as shown below:

How to complement the output selection

To complement the selection field list use —complement option. This option used where to select all fields except the specified fields.

In the following example command prints all the fields except the 2nd field in the from ‘/etc/passwd’ file:

How to specify an output delimiter

To specify the output delimiter use the —output-delimiter option. Input delimiter is specified by -d option and by default output delimiter is the same as input delimiter.

Lets first check out the output without using output delimiter as follows:

Now I have added —output-delimiter option and input delimiter colon (:) is replaced with output delimiter ‘SPACE» as follows:

Let’s check another example, here we use output delimiter to print on each field in a new line.

Here we use —output-delimiter as $’\n’ which indicates a new line.

Check the output:

How to cut by c haracters

The -c (column) option is used for cutting by character position. Remember that ‘TABS» and ‘Spaces’ are also treated as characters.

To print 1st character from each line from the file named content.txt, use below:

In the following example we will display character 1 through 7 (range) of each line from the file:

Let’s check how to select columns by either specific start or end position.

To extract columns from 2nd character to last character:

To extract columns from 1st character to 4th character:

How to cut by bytes

Use the -b option to select out a portion of a line by specifying a byte position by numbers separated by comma (,). Using hyphen you can specify a range of bytes.

The following example cut from 1st, 2nd and 3rd bytes from the file named ‘content.txt’:

We can also list with ranges using the below command:

Some practical cut examples

Cut is most practical used with a combination of different Linux or Unix commands.

For example, you want to extract ‘USER’, ‘PID’ and «COMMAND» using ps command:

Let’s take another example to extract ‘total’, ‘used’ and ‘free’ value of memory and save to a text file using multiple command:

Conclusion

The cut command can be piped with many other Linux or Unix commands. It can be piped with one or more filters for additional text processing.

One of the limitations of cut command is it doesn’t support specifying more than one character as a delimiter. Multiple blanks are counted as multiple field separators and have to use tr command before cut to get the desired output.

How to cut by c haracters

The -c (column) option is used for cutting by character position. Remember that ‘TABS» and ‘Spaces’ are also treated as characters.

To print 1st character from each line from the file named content.txt, use below:

In the following example we will display character 1 through 7 (range) of each line from the file:

Читайте также:  Fry tv аналог для windows

Let’s check how to select columns by either specific start or end position.

To extract columns from 2nd character to last character:

To extract columns from 1st character to 4th character:

How to cut by bytes

Use the -b option to select out a portion of a line by specifying a byte position by numbers separated by comma (,). Using hyphen you can specify a range of bytes.

The following example cut from 1st, 2nd and 3rd bytes from the file named ‘content.txt’:

We can also list with ranges using the below command:

Some practical cut examples

Cut is most practical used with a combination of different Linux or Unix commands.

For example, you want to extract ‘USER’, ‘PID’ and «COMMAND» using ps command:

Let’s take another example to extract ‘total’, ‘used’ and ‘free’ value of memory and save to a text file using multiple command:

Conclusion

The cut command can be piped with many other Linux or Unix commands. It can be piped with one or more filters for additional text processing.

One of the limitations of cut command is it doesn’t support specifying more than one character as a delimiter. Multiple blanks are counted as multiple field separators and have to use tr command before cut to get the desired output.

Источник

cut command in Linux with examples

The cut command in UNIX is a command for cutting out the sections from each line of files and writing the result to standard output. It can be used to cut parts of a line by byte position, character and field. Basically the cut command slices a line and extracts the text. It is necessary to specify option with command otherwise it gives error. If more than one file name is provided then data from each file is not precedes by its file name.

Syntax:

Let us consider two files having name state.txt and capital.txt contains 5 names of the Indian states and capitals respectively.

Without any option specified it displays error.

Options and their Description with examples:

1. -b(byte): To extract the specific bytes, you need to follow -b option with the list of byte numbers separated by comma. Range of bytes can also be specified using the hyphen(-). It is necessary to specify list of byte numbers otherwise it gives error. Tabs and backspaces are treated like as a character of 1 byte.

It uses a special form for selecting bytes from beginning upto the end of the line:

2. -c (column): To cut by character use the -c option. This selects the characters given to the -c option. This can be a list of numbers separated comma or a range of numbers separated by hyphen(-). Tabs and backspaces are treated as a character. It is necessary to specify list of character numbers otherwise it gives error with this option.

Syntax:

Here,k denotes the starting position of the character and n denotes the ending position of the character in each line, if k and n are separated by “-” otherwise they are only the position of character in each line from the file taken as an input.

Above cut command prints second, fifth and seventh character from each line of the file.

Above cut command prints first seven characters of each line from the file.

Cut uses a special form for selecting characters from beginning upto the end of the line:

3. -f (field): -c option is useful for fixed-length lines. Most unix files doesn’t have fixed-length lines. To extract the useful information you need to cut by fields rather than columns. List of the fields number specified must be separated by comma. Ranges are not described with -f option. cut uses tab as a default field delimiter but can also work with other delimiter by using -d option.
Note: Space is not considered as delimiter in UNIX.

Syntax:

Like in the file state.txt fields are separated by space if -d option is not used then it prints whole line:

If -d option is used then it considered space as a field separator or delimiter:

4. –complement: As the name suggests it complement the output. This option can be used in the combination with other options either with -f or with -c.

5. –output-delimiter: By default the output delimiter is same as input delimiter that we specify in the cut with -d option. To change the output delimiter use the option –output-delimiter=”delimiter”.

Here cut command changes delimiter(%) in the standard output between the fields which is specified by using -f option .

6. –version: This option is used to display the version of cut which is currently running on your system.

Applications of cut Command

1. How to use tail with pipes(|): The cut command can be piped with many other commands of the unix. In the following example output of the cat command is given as input to the cut command with -f option to sort the state names coming from file state.txt in the reverse order.

It can also be piped with one or more filters for additional processing. Like in the following example, we are using cat, head and cut command and whose output is stored in the file name list.txt using directive(>).

Thanks Saloni Gupta for providing more examples.

Источник

Команда cut Linux

Команда cut используется, если нужно вырезать часть текста — при этом он может находиться в файле либо быть напечатанным через стандартный ввод. В Unix-системах эта команда удаляет секции текста, которые были обозначены при помощи байтов, символов или полей, разделенных знаками «-« и «:». Работу cut обеспечивает одноименная утилита. Она входит в состав GNU Coreutils, так что по умолчанию доступна во всех дистрибутивах Linux. Также ею можно воспользоваться на машинах с операционной системой BSD.

Читайте также:  Windows не перемещаются файлы

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

Синтаксис команды cut

Написание команды cut выглядит следующим образом:

$ cut опции путь_к_файлу

Использовать файл не обязательно. Если на месте его названия поставить прочерк либо не указать ничего, команда возьмет текст из стандартного ввода. При необходимости можно указывать больше файлов, чем один.

Параметры cut

Список опций, которые позволяют управлять поведением команды:

  • -b (—bytes=LIST) — номер байта, набор или диапазон байтов, подлежащих вырезанию.
  • -c (—characters=LIST) — символ, который следует вырезать. Также можно указывать набор либо диапазон символов.
  • -d (—delimiter=DELIM) — с помощью этой опции пользователь устанавливает свой разделитель вместо стандартного TAB.
  • -f (—fields=LIST) — перечень полей для вырезания.
  • -s (—only-delimited) — если была применена эта опция, cut не выводит строки, где нет разделителя.
  • —complement — задает байты, символы или поля, которые останутся в файле или тексте из стандартного ввода. Все остальное будет вырезано.
  • —output-delimiter=STRING — по умолчанию выходной разделитель соответствует входному. Эта опция позволяет задать другой выходной разделитель.
  • -z, —zero-terminated — вместо символа новой строки разделителем будет NULL.

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

Примеры использования cut в Linux

Прежде всего создадим файл cut_command_example.txt и поместим его в домашнюю директорию. В теле документа пропишем текст:

Winter: white: snow: frost
Spring: green: grass: warm
Summer: colorful: blossom: hot
Autumn: yellow: leaves: cool

1. Работа с байтами

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

Чтобы вырезать из текста, напечатанного через стандартный ввод, первый символ, команда cut должна иметь вид:

echo «The sky was yellow as brass.» | cut -b 1

Если же необходимо вырезать несколько символов, их номера указывают через запятую:

echo «I looked at my watch; not eight o’clock.» | cut -b 5,8,17

Нет ничего сложного и в том, чтобы вырезать некоторый диапазон символов. В этом случае номера символов указывают через дефис:

echo «Still I opened the gate, and put the petrol pump in readiness.» | cut -b 38-43

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

Теперь рассмотрим те варианты использования команды, где нужно вырезать символы из текста, который находится в файле. Стандартная запись в терминале выглядит так:

cut -b 1,9 cut_command_example.txt

Как вы можете помнить, в созданном ранее документе было четыре строки. Команда в каждой из них вырезала символы, соответствующие указанным номерам байтов, и вывела их также построчно.

Примерно так же работает вырезание символов в заданном диапазоне. Диапазон — это два числа, написанные через дефис:

cut -b 12-20 cut_command_example.txt

Команду cut можно использовать саму по себе, но не возбраняется сочетать с другими командами. Чаще всего используется sort. Попробуем вырезать первые 4 символа и расположить строки в алфавитном порядке:

cut -b 1-7 cut_command_example.txt | sort

Для сортировки по алфавиту команде sort не нужны дополнительные опции. А вот чтобы расположить строки в обратном порядке, следует добавить к записи -r:

cut -b 1-7 cut_command_example.txt | sort -r

При помощи дефиса, который стоит рядом с числом, обозначающим номер байта, можно задавать неопределенные диапазоны символов. Например, чтобы команда вырезала все символы, начиная с пятого и заканчивая последним, нужно поставить дефис справа от числа:

cut -b 5- cut_command_example.txt

А чтобы были вырезаны все символы, начиная с первого байта и заканчивая шестнадцатым, дефис должен находиться справа от числа:

cut -b -25 cut_command_example.txt

Точно так же дефис используется, если текст задан не из файла, а через стандартный ввод:

echo «The pallid sunlight through the window shone upon my hands.» | cut -b -35

echo «The pallid sunlight through the window shone upon my hands.» | cut -b 35-

2. Работа с символами

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

echo «She offered to help me, but that was not allowed.» | cut -c 1

Чтобы вырезать другие символы, следует указать их порядковые номера. Важно помнить о том, что если числовое значение превысит количество символов в строке, команда не будет выполнена.

echo «We worked till dusk, then washed and dressed.» | cut -c 12,31,45

При работе с символами можно использовать диапазоны значений, точно так же, как и при работе с байтами.

echo «The two cars were now racing side by side along the straight road.» | cut -c 17-52

Нередко возникает необходимость вырезать часть текста из готового документа. Чтобы сделать это, достаточно выполнить команду

cut -c 18,25 cut_command_example.txt

Как видно на скриншоте, были вырезаны восемнадцатый и двадцать пятый символы в каждой из строк.

Читайте также:  Windows how to uninstall driver

Если же вырезать только первый символ в каждой строке при помощи команды

cut -c 1 cut_command_example.txt

результат будет таким же, как и у команды

cat cut_command_example.txt | cut -c 1

Чтобы вырезать из текстового файла диапазон символов, нужно напечатать в терминале следующую команду:

cut -c 7-34 cut_command_example.txt

Возможность сортировки вырезанных символов сохраняется независимо от того, в байтах или в символах команде cut были заданы параметры текста. Команда sort расставляет символы в алфавитном порядке по умолчанию:

cut -c 1-9 cut_command_example.txt | sort

Расстановка символов в обратном порядке — начиная с конца алфавита — требует применения опции -r:

cut -c 1-9 cut_command_example.txt | sort -r

Уже известный нам трюк с дефисом возле числа можно повторить и в данном случае:

echo «We had had fights for the same reason before now.» | cut -c 12-

Будет вырезана последовательность символов, начиная с двенадцатого и заканчивая последним в строке.

А чтобы вырезать символы, начиная с первого и заканчивая двенадцатым, дефис следует переместить влево:

echo «We had had fights for the same reason before now.» | cut -c -12

С текстом, содержащимся в файле, поступают аналогично:

cut -c -8 cut_command_example.txt

cut -c 8- cut_command_example.txt

Команда вырезает текст в каждой из строк, согласно заданным параметрам.

3. Работа со столбцами

Создавая файл cut_command_example.txt, мы отделяли слова друг от друга не только пробелами, но и двоеточиями. Наконец пришло время использовать эти знаки на практике. А нужны они для того, чтобы вырезать фрагменты текста из столбцов и называются разделителями. Кроме двоеточий и пробелов в качестве разделителей можно использовать дефисы.

Но начнем, как всегда, с текста в стандартном выводе. Чтобы вырезать слово из первого столбца, воспользуемся командой

echo «From the inn issued a smell of frying liver.» | cut -d ‘ ‘ -f 1

В случае с текстовым файлом результат такой же — первое слово каждого столбца напечатано в терминале:

cut -d ‘:’ -f 1 cut_command_example.txt

Чтобы вырезать несколько столбцов, нужно указать их номера. Для текста, напечатанного через стандартный ввод, команда имеет вид:

echo «He was extraordinarily particular about politeness in others.» | cut -d ‘ ‘ -f 1,2,3

В данном примере ее результатом должны быть первые три слова — He was extraordinarily.

При использовании текстового файла аналогичная команда выглядит так:

cut -d ‘:’ -f 1,2,3 cut_command_example.txt

Из файла были вырезаны три первые столбца, а их содержимое выведено в терминал.

Ничуть не хуже команда работает, если задать ей параметры текста в виде диапазона чисел:

echo «Surprised, we looked at one another.» | cut -d ‘ ‘ -f 1-5

Как и ожидалось, были вырезаны столбцы (слова) с первого по пятый. Обратите внимание на два апострофа, которые из раза в раз появляются в записи команды при работе с текстом из стандартного ввода. Эти знаки необходимы, если разделителем является символ пробела. Теперь вырежем диапазон полей из файла:

cut -d ‘:’ -f 1-3 cut_command_example.txt

Точно так же, как раньше сортировали вырезанные символы, мы можем поступить и сейчас — расставить названия сезонов из файла в алфавитном порядке:

cut -d ‘:’ -f 1 cut_command_example.txt | awk ‘‘ | sort

Меняя числовое значение опции -f, можно вырезать и сортировать содержимое других столбцов. Отсортировать названия сезонов в обратном порядке поможет опция -r, добавленная к команде sort:

cut -d ‘:’ -f 1 cut_command_example.txt | awk ‘‘ | sort -r

Вырезать содержимое, начиная с определенного столбца и заканчивая последним в строке, получится, если использовать такую команду, где справа от числа, обозначающего номер начального столбца, стоит дефис:

echo «We became still more friendly.» | cut -d ‘ ‘ -f 2-

Переместив дефис влево, мы сделаем этот столбец последним, а вырезать слова команда будет, начиная с первого столбца.

echo «We became still more friendly.» | cut -d ‘ ‘ -f -2

Работа этой команды с текстовыми файлами не имеет принципиальных отличий:

cut -d ‘:’ -f 2- cut_command_example.txt

cut -d ‘:’ -f -2 cut_command_example.txt

Команда cut также пригодится при работе с массивными CSV-документами. Ее синтаксис и опции в этом случае остаются неизменными. Например, при таком написании будут вырезаны первые два столбца файла с названием file_example.csv:

cut -d ‘,’ -f 1,2 file_example.csv

Выводы

Команда cut linux — это инструмент, который пригодится всем пользователям Linux, которые работают с большими текстовыми документами. Ее возможности поистине фантастические и она имеет немало преимуществ перед другими схожими утилитами.

Как всегда, не стесняйтесь задавать вопросы в комментариях, если какие-то аспекты работы этой команды остались непонятными для вас.

Нет похожих записей

Оцените статью:

Об авторе

Автор: Rubaiat Hossain

Больше восьми лет назад мною было принято решение объявить бойкот оконной монополии и установить на свой компьютер Ubuntu. С тех пор это моя основная ОС. Иногда в порядке эксперимента «подселяю» к ней собратьев из семьи Linux. Увлекаюсь фотографией и горным туризмом. В свободное от работы время пишу статьи для losst.ru.

6 комментариев

Когда в ГУЕ прог тьма, то она на фиг не нужна, но знать её надо.?

Да. Такое впечатление, будто вы не представляете работу в GNU без графической оболочки и где вообще можно применять консольные утилиты.

Это надо для написания скриптов в основном

товарищи, а как вырезать предпоследнее и последнее поле, если не знаешь общее количество полей?
(например, uslugi.mos.ru — > mos.ru или m.pay.vk.com ->vk.com)

нашел,
awk -F. ‘
но столкнулся с проблемой если запись с номером (FN-1) отсутствует, выдаёт ошибку

Через rev:
echo » One Two Three» | rev | cut -d ‘ ‘ -f -2 | rev
> Two Three
echo » One Two Three Four Five» | rev | cut -d ‘ ‘ -f -2 | rev
> Four Five

Источник

Оцените статью