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

Дистрибутивы GNU/Linux включают в себя множество программ для обработки текста, большинство из которых предоставляются основными утилитами GNU. Освоить их может быть сложно, но эти утилиты могут оказаться очень полезными и эффективными при правильном использовании.
Вот тринадцать мощных инструментов для манипуляции текстом, которые должен знать каждый пользователь командной строки.
1. cat
Cat был разработан для конкатенации файлов, но чаще всего используется для отображения одного файла. Без аргументов cat считывает стандартный ввод до тех пор, пока не будет нажата Ctrl + D (из терминала или из вывода другой программы, если используется пайп). Стандартный ввод также можно явно указать с помощью -.
У cat есть множество полезных опций, в частности:
-Aвыводит “$” в конце каждой строки и отображает непечатаемые символы с помощью записи каретки.-nнумерует все строки.-bнумерует непустые строки.-sсокращает серию пустых строк до одной пустой строки.
В следующем примере мы конкатенируем и нумеруем содержимое file1, стандартный ввод и file3.
cat -n file1 - file3
2. sort
Как следует из названия, sort сортирует содержимое файлов в алфавитном и числовом порядке.

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

4. comm
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-й символ.

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

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

7. fold
Чтобы облегчить чтение и обработку длинных строк текста, вы можете использовать fold, который оборачивает строки до заданной ширины.
Fold точно соответствует заданной ширине по умолчанию, разрывая слова, где это необходимо.
fold -w30 longline.txt
Если разбиение слов нежелательно, вы можете использовать опцию -s, чтобы разбивать на пробелах.
fold -w30 -s longline.txt
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.

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

11. split
Вы можете использовать split, чтобы разделить файл на более мелкие файлы по количеству строк, по размеру или на конкретное количество файлов.
Разделение по количеству строк
split -l num_lines input_file output_prefix
Разделение по байтам
split -b bytes input_file output_prefix
Разделение на конкретное количество файлов
split -n num_files input_file output_prefix12. tac
Tac, что является cat в обратном порядке, делает именно это: он отображает файлы со строками в обратном порядке.

13. tr
Инструмент tr используется для перевода или удаления наборов символов.
Набор символов часто представляет собой строку или диапазоны символов. Например:
- “A-Z”: все заглавные буквы
- “a-z0-9”: строчные буквы и цифры
- “\n[:punct:]”: символы новой строки и пунктуации
Обратитесь к странице руководства по tr для получения более подробной информации.
Чтобы перевести один набор в другой, используйте следующий синтаксис:
tr SET1 SET2Например, для замены строчных символов на их эквиваленты в верхнем регистре вы можете использовать следующее:
tr "a-z" "A-Z"
Чтобы удалить набор символов, используйте флаг -d.
tr -d SETЧтобы удалить дополнение к набору символов (т.е. все, кроме набора), используйте -dc.
tr -dc SETЗаключение
Есть много чему научиться, когда речь идет о командной строке Linux. Надеемся, что указанные выше команды помогут вам лучше справляться с текстом в командной строке.