Операционные системы на основе Linux предлагают множество утилит для обработки текста из командной строки, которые вы можете использовать в своей повседневной работе. Команда cut — это одна из таких утилит для работы с текстом, которая использует разделители, байты, поля и столбцы для извлечения необходимой строки из базы данных плоского файла или строки.
Поскольку база данных с плоскими файлами не имеет структурных отношений, а записи разделены с помощью разделителей, вырезание является идеальным инструментом для извлечения символов или байтов информации. В этой статье подробно обсуждается команда вырезания и демонстрируются некоторые практические примеры с различными параметрами фильтрации, которые помогут вам начать работу с этим инструментом.
Обзор команды cut
cut использует следующий базовый синтаксис:
резать
Вы также можете подключить его к другим командам следующим образом:
эхо «string_of_characters» | резать
Обратите внимание, что отсутствие какой-либо опции приводит к ошибке. Вот некоторые флаги, которые вы можете использовать с cut для вызова его различных функций:
Вариант | Описание |
---|---|
-б | Обрезает по позиции байта |
-с | Сокращения по положению персонажа |
-д | Извлекает строку, используя разделитель, указанный в опции поля (-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.
Хотите улучшить свою игру в Linux и узнать больше об управлении текстом? Вот пять лучших инструментов командной строки Linux, с которых можно начать свое путешествие.
Читать дальше
- линукс
- Команды Linux
- Linux элементарный
- Оболочка Linux Bash
Румаиса — независимый писатель в MUO. Она носила много шляп, от математика до энтузиаста информационной безопасности, и теперь работает аналитиком SOC. Ее интересы включают чтение и письмо о новых технологиях, дистрибутивах Linux и обо всем, что связано с информационной безопасностью.
Подписывайтесь на нашу новостную рассылку
Подпишитесь на нашу рассылку технических советов, обзоров, бесплатных электронных книг и эксклюзивных предложений!
Нажмите здесь, чтобы подписаться