Базираните на Linux операционни системи предлагат много помощни програми за обработка на текст от команден ред, които можете да използвате в ежедневната си рутина. Командата cut е една такава помощна програма за манипулиране на текст, която използва разделители, байтове, полета и колони, за да извлече задължителен низ от база данни с плосък файл или ред.

Тъй като базата данни с плосък файл няма структурна връзка и записите са разделени с помощта на разделители, cut е идеален инструмент за извличане на знаци или байтове информация. Тази статия обсъжда подробно командата за изрязване и демонстрира някои практически примери с различни опции за филтриране, за да започнете с инструмента.

Преглед на командата cut

cut използва следния основен синтаксис:

разрез 

Можете също да го изпратите с други команди, както следва:

ехо „низ_на_символи“ | разрез 

Моля, имайте предвид, че отсъствието на каквато и да е опция генерира грешка. Ето някои флагове, които можете да използвате с cut, за да извикате различните му функции:

instagram viewer
Опция Описание
Изрязва по позиция на байт
-° С Нарязва по позиция на символа
Извлича низ с помощта на разделителя, определен с опцията за поле (-f).
-f Извлича се по определено поле
Екстракти само за разделители
--допълнение Отпечатайте изхода с изключение на полето, което сте посочили
--изход-разделител Заменете съществуващия разделител с този, който сте посочили

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

1. Извличане на специфични символи от низ

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

ехо "Здравей свят" | изрязване -b 1,2,3,5,8,9

Изход:

Хелор

Можете също да посочите път към файла вместо низ:

cut -b 1,2,3,4,5 filename.txt

Или можете да извлечете знаци според тяхната позиция в текста. Използвай -° С опция, последвана от последователността/реда на знаците, които трябва да извлечете, както следва:

ехо "Здравей свят" | изрязване -c 1,2,3,5,6,8,10,11

Изход:

Здравей стар

По същия начин, за да извлечете полета или колони от база данни с плосък файл, използвайте командата cut с -f опция за флаг:

cut -f 3 база данни.txt

2. Изрязване на диапазон от байтове или символи

Можете също да използвате флаг с командата cut, за да извлечете и отпечатате множество диапазони от байтове, както следва:

cut -b 1-7,16-23 database.txt

Можете да дефинирате диапазона за извличане на знаци с помощта на -° С маркирайте, както следва:

cut -c 1-7,16-23 database.txt

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

Използвай -cn- опция за извличане на текст от n-ти знак нататък до края на реда, където н е индексът на символ в низа.

Например, за да извлечете низа, започващ от шестия знак до края на реда:

cut -c6- database.txt

Или използвайте следната команда, за да извлечете от началото до последно м символи от файла:

cut -c-8 database.txt

4. Изрязване на множество полета от файл

Можете също да отпечатате множество полета от файл с помощта на -f флаг.

cut -f 1,2 база данни.txt

Изход:

ИМЕ ВЪЗРАСТ 
Джон 20
Лиза 24
Джак 18
Брус 23
Нанси 19

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

Можете да използвате флаг, за да посочите разделителя с -f опция. Разделителят определя символа, използван за разделяне на полета в текстов файл.

Например, за да извлечете първата колона на /etc/passwd файл, използвайте двоеточие (:) като разделител:

cut -d ‘:’ -f 1 /etc/passwd

По същия начин, стойността на разделителя в дадения поток от текст е единично интервал:

ехо "1% от 1%" | cut -d ' ' -f 2,3

Изход:

1% от

6. Промяна на изходния разделител за дисплей

В --изход-разделител флаг добавя гъвкавост към изхода на командата за изрязване. Например, можете да използвате флага, за да покажете изхода в отделен ред, като използвате $’\n’ (нов ред) стойност, както следва:

grep alice /etc/passwd | cut -d ':' -f 1,5,7 --output-delimiter=$'\⁠n'

Изход:

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

Освен това можете също да замените разделител на входен файл с разделителя по ваш избор в изхода, като използвате --изход-разделител флаг:

grep root /etc/passwd | cut -d ':' -f 1,6,7 --output-delimiter=@

Изход:

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

7. Изрязване на полета само когато линията съдържа разделителя

Използвай флаг за извличане на полета само когато редовете съдържат разделител. Например, следната команда няма да извлече полето -f 1 освен ако няма разделител за интервал:

echo "HelloWorld" | cut -d " " -f 1 -s

Напротив, по-долу споменатата команда ще генерира изход, тъй като низът съдържа посочения разделител:

ехо "Здравей свят" | cut -d " " -f 1 -s

Изход:

Здравейте

По същия начин можете да използвате всеки друг знак като разделител:

ехо "Здравей: Свят" | изрязване -d ":" -f 2 -s

Изход:

свят

8. Допълнете командния изход

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

grep "root" /etc/passwd | cut -d ':' --complement -s -f 5

Изход:

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

По същия начин, в примера по-долу, -f 1 параметърът трябва да се показва Здравейте текст обаче, поради --допълнение опция, той отпечатва само останалата част.

ехо "Здравей на целия свят" | cut -d " " -f 1 --допълване

Изход:

на целия свят

Най-добрата част е, че можете да комбинирате командата cut със стандартния изход на други Linux/Unix команди.

sed е един такъв инструмент за редактиране на текст, който можете да използвате, за да изтриете, вмъкнете и замените своя текст. Можете лесно да предадете неговия изход към командата за изрязване.

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

grep alice /etc/passwd | sed 's/:/-/g' | cut -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 Elementary
  • Linux Bash Shell
За автора
Румайса Ниази (Публикувани 10 статии)

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

Още от Rumaisa Niazi

Абонирайте се за нашия бюлетин

Присъединете се към нашия бюлетин за технически съвети, ревюта, безплатни електронни книги и ексклузивни оферти!

Щракнете тук, за да се абонирате