Дистрибутивы 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: третий символ.
- -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 -w 30 longline.txt
Если разбиение слов нежелательно, вы можете использовать параметр -s для разбиения по пробелам.
fold -w 30 -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_prefix
12. 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
Комментариев нет:
Отправить комментарий