Тринадцать полезных инструментов для работы с текстом в командной строке

Text Tool Linux Command Line Featured

Дистрибутивы GNU/Linux включают в себя множество программ для обработки текста, большинство из которых предоставляются основными утилитами GNU. Освоить их может быть сложно, но эти утилиты могут оказаться очень полезными и эффективными при правильном использовании.

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

1. cat

Cat был разработан для конкатенации файлов, но чаще всего используется для отображения одного файла. Без аргументов cat считывает стандартный ввод до тех пор, пока не будет нажата Ctrl + D (из терминала или из вывода другой программы, если используется пайп). Стандартный ввод также можно явно указать с помощью -.

У cat есть множество полезных опций, в частности:

  • -A выводит “$” в конце каждой строки и отображает непечатаемые символы с помощью записи каретки.
  • -n нумерует все строки.
  • -b нумерует непустые строки.
  • -s сокращает серию пустых строк до одной пустой строки.

В следующем примере мы конкатенируем и нумеруем содержимое file1, стандартный ввод и file3.

cat -n file1 - file3

Linux Text Tools Cat

2. sort

Как следует из названия, sort сортирует содержимое файлов в алфавитном и числовом порядке.

Linux Text Tools Sort

3. uniq

Uniq берет отсортированный файл и удаляет дубликаты строк. Часто используется в связке с sort в одной команде.

Linux Text Tools Uniq

4. comm

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

Linux Text Tools Comm

5. cut

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

Вырезка по позиции символа

Опция -c указывает на единственную позицию символа или один или несколько диапазонов символов.

Например:

  • -c 3: 3-й символ.
  • -c 3-5: с 3-го по 5-й символ.
  • -c -5 или -c 1-5: с 1-го по 5-й символ.
  • -c 5-: с 5-го символа до конца строки.
  • -c 3,5-7: 3-й символ и с 5-го по 7-й символ.

Linux Text Tools Cut Char

Вырезка по полям

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

Linux Text Tools Cut Field

6. dos2unix

GNU/Linux и Unix обычно завершают текстовые строки символом перевода строки (LF), в то время как Windows использует возврат каретки и перевод строки (CRLF). Проблемы совместимости могут возникнуть при обработке текста CRLF в Linux, и здесь вступает в дело dos2unix. Он преобразует CRLF окончания в LF.

В следующем примере команда file используется для проверки текстового формата до и после использования dos2unix.

Linux Text Tools Dos2unix

7. fold

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

Fold точно соответствует заданной ширине по умолчанию, разрывая слова, где это необходимо.

fold -w30 longline.txt

Linux Text Tools Fold

Если разбиение слов нежелательно, вы можете использовать опцию -s, чтобы разбивать на пробелах.

fold -w30 -s longline.txt

Linux Text Tools Fold Spaces

8. iconv

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

iconv -f input_encoding -t output_encoding -o output_file input_file
  • “input_encoding” — это кодировка, из которой вы конвертируете.
  • “output_encoding” — это кодировка, в которую вы конвертируете.
  • “output_file” — это имя файла, в который iconv сохранит данные.
  • “input_file” — это имя файла, из которого iconv будет читать.

Примечание: вы можете перечислить доступные кодировки с помощью iconv -l

9. sed

sed — это мощный и гибкий потоковый редактор, чаще всего используемый для поиска и замены строк с помощью следующего синтаксиса.

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

sed s/pattern/replacement/g filename

Чтобы изменить оригинальный файл, можно использовать флаг -i.

Linux Text Tools Sed

10. wc

Утилита wc выводит количество байт, символов, слов или строк в файле.

Linux Text Tools Wc

11. split

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

Разделение по количеству строк

split -l num_lines input_file output_prefix

Linux Text Tools Split Lines

Разделение по байтам

split -b bytes input_file output_prefix

Linux Text Tools Split Bytes

Разделение на конкретное количество файлов

split -n num_files input_file output_prefix

12. tac

Tac, что является cat в обратном порядке, делает именно это: он отображает файлы со строками в обратном порядке.

Linux Text Tools Tac

13. tr

Инструмент tr используется для перевода или удаления наборов символов.

Набор символов часто представляет собой строку или диапазоны символов. Например:

  • “A-Z”: все заглавные буквы
  • “a-z0-9”: строчные буквы и цифры
  • “\n[:punct:]”: символы новой строки и пунктуации

Обратитесь к странице руководства по tr для получения более подробной информации.

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

tr SET1 SET2

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

tr "a-z" "A-Z"

Linux Text Tools Tr

Чтобы удалить набор символов, используйте флаг -d.

tr -d SET

Чтобы удалить дополнение к набору символов (т.е. все, кроме набора), используйте -dc.

tr -dc SET

Заключение

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