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

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

Обзор команды cut

cut использует следующий базовый синтаксис:

резать 

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

эхо «string_of_characters» | резать 

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

instagram viewer
Вариант Описание
Обрезает по позиции байта
Сокращения по положению персонажа
Извлекает строку, используя разделитель, указанный в опции поля (-f)
-f Извлекает по указанному полю
Выдержки только для разделителей
--дополнение Распечатайте вывод, кроме поля, которое вы указали
--output-разделитель Замените существующий разделитель на тот, который вы указали

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

1. Извлечение определенных символов из строки

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

эхо "Привет, мир" | вырезать -б 1,2,3,5,8,9

Вывод:

Хелоор

Вы также можете указать путь к файлу вместо строки:

вырезать -b 1,2,3,4,5 имя файла.txt

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

эхо "Привет, мир" | вырезать -с 1,2,3,5,6,8,10,11

Вывод:

привет старый

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

вырезать -f 3 база данных.txt

2. Вырезать диапазон байтов или символов

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

вырезать -b 1-7,16-23 база данных.txt

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

вырезать -c 1-7,16-23 база данных.txt

3. Извлечь текст из начальной или конечной позиции

Использовать -сп- возможность извлекать текст от n-го символа и далее до конца строки, где н это индекс символа в строке.

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

вырезать -c6- база данных.txt

Или используйте следующую команду для получения от начала до последнего м символы из файла:

вырезать -c-8 база данных.txt

4. Вырезать несколько полей из файла

Вы также можете распечатать несколько полей из файла, используя -f флаг.

вырезать -f 1,2 база данных.txt

Вывод:

НАЗОВИТЕ ВОЗРАСТ 
Джон 20
Лиза 24
Джек 18
Брюс 23
Нэнси 19

5. Извлечение текста с помощью разделителей

Вы можете использовать флаг, чтобы указать разделитель с -f вариант. Разделитель определяет символ, используемый для разделения полей в текстовом файле.

Например, чтобы извлечь первый столбец /etc/passwd файла, используйте двоеточие (:) в качестве разделителя:

вырезать -d ‘:’ -f 1 /etc/passwd

Точно так же значением разделителя в данном потоке текста является один пробел:

echo "1% из 1%" | вырезать -d '' -f 2,3

Вывод:

1% от

6. Изменить разделитель вывода для отображения

То --output-разделитель флаг добавляет гибкости выводу команды cut. Например, вы можете использовать флаг для отображения вывода в отдельной строке с помощью $’\n’ (новая строка) значение следующим образом:

grep Алиса /etc/passwd | вырезать -d ':' -f 1,5,7 --output-delimiter=$'\⁠n'

Вывод:

Алиса
Алиса
/bin/sh

Кроме того, вы также можете заменить разделитель входного файла разделителем по вашему выбору в выходных данных, используя --output-разделитель флаг:

корень grep /etc/passwd | вырезать -d ':' -f 1,6,7 --output-delimiter=@

Вывод:

root@/root@/bin/bash
nm-openvpn@/var/lib/openvpn/chroot@/usr/sbin/nologin

7. Вырезать поля, только если строка содержит разделитель

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

эхо "HelloWorld" | вырезать -d " " -f 1 -s

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

эхо "Привет, мир" | вырезать -d " " -f 1 -s

Вывод:

Привет

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

эхо "Привет: Мир" | вырезать -d ":" -f 2 -s

Вывод:

Мир

8. Дополнить вывод команды

Утилита cut также позволяет распечатать все поля, кроме указанного поля. Использовать --дополнение вариант следующим образом, чтобы получить все данные учетной записи пользователя root, кроме пятого столбца:

grep "корень" /etc/passwd | вырезать -d ':' --дополнение -s -f 5

Вывод:

корень: x: 0:0:/корень:/bin/bash

Аналогично, в приведенном ниже примере -f 1 параметр должен отображаться Привет текст, однако, из-за --дополнение вариант, он печатает только остальную часть.

эхо "Привет всему миру" | вырезать -d " " -f 1 --дополнение

Вывод:

всему миру

Самое приятное то, что вы можете комбинировать команду cut со стандартным выводом других команд Linux/Unix.

сед — это один из таких инструментов для редактирования текста, который вы можете использовать для удаления, вставки и замены текста. Вы можете легко передать его вывод команде cut.

В приведенном ниже примере команда grep выходные данные передаются утилите sed, которая заменяет двоеточие (:) дефисом (-), а затем cut отображает поля 1, 6 и 7 следующим образом:

grep Алиса /etc/passwd | sed 's/:/-/g' | вырезать -d '' -f 1,5,7

Вывод:

alice-x-1005-1008-Alice-/home/new/alice-/bin/sh

Работа с текстом в Linux с помощью cut

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

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

5 самых полезных команд Linux для работы с текстом

Хотите улучшить свою игру в Linux и узнать больше об управлении текстом? Вот пять лучших инструментов командной строки Linux, с которых можно начать свое путешествие.

Читать дальше

доляТвитнутьЭлектронное письмо
Похожие темы
  • линукс
  • Команды Linux
  • Linux элементарный
  • Оболочка Linux Bash
Об авторе
Румайса Ниази (опубликовано 10 статей)

Румаиса — независимый писатель в MUO. Она носила много шляп, от математика до энтузиаста информационной безопасности, и теперь работает аналитиком SOC. Ее интересы включают чтение и письмо о новых технологиях, дистрибутивах Linux и обо всем, что связано с информационной безопасностью.

Другие работы Румайсы Ниази

Подписывайтесь на нашу новостную рассылку

Подпишитесь на нашу рассылку технических советов, обзоров, бесплатных электронных книг и эксклюзивных предложений!

Нажмите здесь, чтобы подписаться