- Команда Cut в Linux с примерами
- Linux Cut Command with Examples
- В этом руководстве мы покажем вам, как использовать cut команду, на практических примерах и подробных объяснениях наиболее распространенных опций.
- Как использовать cut команду
- Как вырезать по полю
- Как резать на основе разделителя
- Как дополнить выбор
- Как указать выходной разделитель
- Как вырезать из байтов и символов
- Примеры
- Получить список всех пользователей
- Посмотреть 10 наиболее часто используемых команд
- Вывод
- Русские Блоги
- 4. Команды Linux sort, uniq, join, cut, paste.
- Общие параметры команды
- Команды фильтрации в Linux. head, tail, sort, nl, wc, cut, sed, uniq, tac
- Фильтры в Linux
- head
- tail
- sort
- nl
- wc
- cut
- sed
- uniq
- tac
- Вывод
- 12.4. Команды обработки текста
- Примечания
Команда 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 имеет некоторые ограничения. Он не поддерживает указание более одного символа в качестве разделителя и не поддерживает несколько разделителей.
Источник
Русские Блоги
4. Команды Linux sort, uniq, join, cut, paste.
Общие параметры команды
-c # Проверить, отсортирован ли файл
-k # Укажите домен сортировки
-m # Объединить два отсортированных файла
-n # Сортировать по размеру числа
-o [выходной файл] # вывод / перенаправление в указанный файл
-r # Отображение результатов сортировки в обратном порядке
-t # Изменить разделитель домена
-u # Удалить повторяющиеся строки в результате
-c # Вывести количество повторений каждой строки в файле
-d # Отображать повторяющиеся записи, каждая запись отображается один раз
-u # Отображать только записи, которые не дублируются
- параметры команды присоединения
Команда соединения может работать только с отсортированными файлами.
-a1 или -a2 # соответственно отображать записи, у которых нет общего домена, в первом и втором файлах
-i # При сравнении содержимого домена игнорировать регистр символов
-o # Установить формат отображения результатов
-t # Изменить разделитель домена
-v1 или -v2 # Аналогично параметру -a, но не отображает записи с общим доменом
-1 или -2 # -1 используется для установки домена соединения с файлом 1, -2 используется для установки домена соединения с файлом 2
- параметры команды вырезания
Команда вырезания используется для извлечения файлов по полю или строке из стандартных текстовых файлов.
-c # Извлечь указанное количество символов или диапазон символов, за которым следуют числа
-f # Укажите количество или диапазон извлеченных доменов
-d # Изменить разделитель домена
- вставить параметры команды
Команда вставки используется для вставки содержимого текстового файла или стандартного вывода в новый файл.
-d # Установить разделитель домена (по умолчанию пробел или табуляция)
-s # Разделить каждый файл на одну строку
Источник
Команды фильтрации в Linux. head, tail, sort, nl, wc, cut, sed, uniq, tac
В статье мы рассмотрим множество команд для фильтрации. Изучение команд будет сопровождаться подробными примерами.
Фильтры в Linux
Фильтры — это способ получения необработанных данных, созданных другой программой или сохраненных в файле.
Эти фильтры имеют различные параметры командной строки, которые изменяют их поведение. В результате, всегда полезно проверить страницу руководства для фильтра.
В приведенных ниже примерах мы будем предоставлять данные для этих программ с помощью файла.
Для каждой из демонстраций ниже будет использоваться следующий файл в качестве примера. Этот файл примера содержит список содержимого, чтобы немного облегчить понимание примеров. Кроме того, файл фактически указан как путь, и поэтому вы можете использовать абсолютные и относительные пути, а также подстановочные знаки.
head
Head — это программа, которая печатает первые строки ввода. По умолчанию он напечатает первые 10 строк, но мы можем изменить это с помощью аргумента командной строки.
head [-количество строк для печати] [путь]
tail
Данная команда противоположна head. Tail — это команда, которая печатает последние строки ввода. По умолчанию он напечатает последние 10 строк, но мы можем изменить это с помощью аргумента командной строки.
tail [-количество строк для печати] [путь]
Выше было поведение tail по умолчанию. А ниже указывается заданное количество строк.
sort
Сортировка — это красиво и просто. По умолчанию сортировка выполняется в алфавитном порядке. Между тем, существует множество параметров, позволяющих изменить механизм сортировки. Кроме того, не забудьте проверить справочную страницу, чтобы увидеть все, что он может сделать.
sort [-options] [path]
nl
Обозначение чисел в Linux реализуется за счет команды nl.
nl [-options] [путь]
Вот еще несколько полезных опций командной строки.
В приведенном выше примере мы использовали 2 параметра командной строки. Первый -s указывает, что следует печатать после числа. С другой стороны, второй -w указывает, сколько отступов ставить перед числами. Для первого нам нужно было включить пробел как часть того, что было напечатано.
Поскольку пробелы обычно используются в качестве символов-разделителей в командной строке, нам нужен был способ указать, что пробел является частью нашего аргумента, а не просто между аргументами. Мы сделали это, включив аргумент в кавычки.
wc
wc обозначает количество слов, а также символы и строки. По умолчанию он подсчитывает все вышеперечисленное. Между тем, используя параметры командной строки, мы можем ограничить его только тем, что нам нужно.
wc [-options] [путь]
Иногда вам просто нужно одно из этих значений. -l даст нам только строки, -w даст нам слова, а -m даст нам символы.
Кроме того, Вы можете комбинировать аргументы командной строки.
cut
Cut — это хорошая команда, которую можно использовать, если ваш контент разделен на столбцы и вам нужны только определенные поля.
вырезать [-опции] [путь]
В нашем примере файла у нас есть данные в 3 столбцах. Допустим, мы хотели только первый столбец.
По умолчанию cut использует символ TAB в качестве разделителя для идентификации полей. Опция -f позволяет нам указать, какое поле мы бы хотели. Если нам нужно 2 или более полей, мы разделяем их запятой, как показано ниже.
sed
Sed расшифровывается как Stream Editor и позволяет эффективно выполнять поиск и замену наших данных. Это довольно мощная команда, но мы будем использовать ее здесь в ее базовом формате.
Инициал s обозначает замену и определяет действие, которое нужно выполнить. Между первой и второй косой чертой (/) мы размещаем то, что ищем. Затем между вторым и третьим слэшем, чем мы хотим его заменить.
uniq
Uniq означает уникальный, и его работа заключается в удалении повторяющихся строк из данных. Однако одно ограничение заключается в том, что эти линии должны быть смежными.
uniq [опции] [путь]
tac
Ребята из Linux известны своим забавным чувством юмора. Программа TAC на самом деле является CAT наоборот. Это было названо так, как это делает противоположность CAT. Получив данные, он напечатает последнюю строку первой, вплоть до первой строки.
Вывод
В данной статье мы ознакомились со следующими командами:
- head — просмотр первых n строк данных.
- tail — просмотр последних n строк данных.
- sort — организуйте данные в порядке.
- nl — напечатайте номера строк перед данными.
- wc — распечатать количество строк, слов и символов.
- cut — разрезать данные на поля и отображать только указанные поля.
- sed — сделайте поиск и замените данные.
- uniq — удалить дубликаты строк.
- tac — распечатайте данные в обратном порядке.
Источник
12.4. Команды обработки текста
Сортирует содержимое файла, часто используется как промежуточный фильтр в конвейерах. Эта команда сортирует поток текста в порядке убывания или возрастания, в зависимости от заданных опций. Ключ -m используется для сортировки и объединения входных файлов. В странице info перечислено большое количество возможных вариантов ключей. См. Пример 10-9, Пример 10-10 и Пример A-9.
Топологическая сортировка, считывает пары строк, разделенных пробельными символами, и выполняет сортировку, в зависимости от заданного шаблона.
Удаляет повторяющиеся строки из отсортированного файла. Эту команду часто можно встретить в конвейере с командой sort.
Ключ -c выводит количество повторяющихся строк.
Команда sort INPUTFILE | uniq -c | sort -nr выводит статистику встречаемости строк в файле INPUTFILE (ключ -nr, в команде sort, означает сортировку в порядке убывания). Этот шаблон может с успехом использоваться при анализе файлов системного журнала, словарей и везде, где необходимо проанализировать лексическую структуру документа.
Пример 12-8. Частота встречаемости отдельных слов
Команда expand преобразует символы табуляции в пробелы. Часто используется в конвейерной обработке текста.
Команда unexpand преобразует пробелы в символы табуляции. Т.е. она является обратной по отношению к команде expand.
Предназначена для извлечения отдельных полей из текстовых файлов. Напоминает команду print $N в awk, но более ограничена в своих возможностях. В простейших случаях может быть неплохой заменой awk в сценариях. Особую значимость, для команды cut, представляют ключи -d (разделитель полей) и -f (номер(а) поля(ей)).
Использование команды cut для получения списка смонтированных файловых систем:
Использование команды cut для получения версии ОС и ядра:
Использование команды cut для извлечения заголовков сообщений из электронных писем:
Использование команды cut при разборе текстового файла:
cut -d ‘ ‘ -f2,3 filename эквивалентно awk -F'[ ]’ ‘< print $2, $3 >‘ filename
Используется для объединения нескольких файлов в один многоколоночный файл.
Может рассматриваться как команда, родственная команде paste. Эта мощная утилита позволяет объединять два файла по общему полю, что представляет собой упрощенную версию реляционной базы данных.
Команда join оперирует только двумя файлами и объедияет только те строки, которые имеют общее поле (обычно числовое), результат объединения выводится на stdout. Объединяемые файлы должны быть отсортированы по ключевому полю.