Введение
В ходе этого эксперимента вы познакомитесь с основными командами Linux для обработки текста: tr, col, join и paste. Вы научитесь эффективно работать с текстовыми файлами, используя эти инструменты, которые являются базовыми для многих задач в Linux. Данное руководство предназначено для начинающих и содержит подробные объяснения и примеры, которые помогут вам досконально разобраться в каждой команде.
Использование команды tr
Команда tr (сокращение от "translate" — переводить/преобразовывать) — это мощный инструмент, используемый для замены или удаления символов в текстовом потоке. Она особенно полезна для таких задач, как изменение регистра, удаление определенных символов или замена одного символа на другой.
Начнем с базовых операций tr:
- Удаление определенных символов из строки:
echo 'hello labex' | tr -d 'olh'
Эта команда удалит все вхождения букв 'o', 'l' и 'h' из входной строки. Вот что здесь происходит:
echo 'hello labex'выводит текст "hello labex".- Символ
|(конвейер или пайп) передает этот вывод командеtr. tr -d 'olh'приказываетtrудалить (-d) любые найденные символы 'o', 'l' или 'h'.
В результате вы должны увидеть e abex. Обратите внимание, что все указанные буквы исчезли.
- Удаление повторяющихся символов:
echo 'hello' | tr -s 'l'
Эта команда «сжимает» (-s) или удаляет дубликаты буквы 'l' во входной строке. На выходе вы получите helo.
echo 'balloon' | tr -s 'o'
Вы увидите ballon. Повторяющаяся 'o' была сжата в одну букву.
- Преобразование текста в верхний регистр:
echo 'hello labex' | tr '[:lower:]' '[:upper:]'
Эта команда переведет все строчные буквы в заглавные. Разберем подробнее:
'[:lower:]'— это класс символов, представляющий все строчные буквы.'[:upper:]'— класс символов, представляющий все заглавные буквы.- Команда указывает
trзаменить любой символ из первого набора соответствующим символом из второго набора.
На выходе должно получиться HELLO LABEX.
Попробуйте выполнить эти команды и понаблюдайте за результатом. Не бойтесь ошибиться — вы всегда можете запустить команду снова. Если вам интересно, что произойдет, попробуйте изменить входной текст или набор символов в команде tr.
Например, как вы думаете, что получится, если выполнить:
echo 'hello world' | tr 'ol' 'OL'
Проверьте это на практике!
Если вы хотите узнать больше о tr, используйте команду man tr для просмотра справочного руководства. Там вы найдете полный список всех опций и вариантов использования. Чтобы выйти из справочника, просто нажмите 'q'.
Помните, что в Linux большинство команд строятся по схожей схеме: команда [опции] аргументы. Понимание этого шаблона поможет вам в дальнейшем изучении системы.
Изучение команды col
Команда col используется для фильтрации обратных подач строк из входных данных. Чаще всего она применяется для преобразования символов табуляции в пробелы и наоборот. Это полезно при работе с файлами, имеющими непоследовательное форматирование, особенно при переносе файлов между различными операционными системами.
Посмотрим на col в действии:
- Сначала просмотрим содержимое файла, содержащего табуляцию:
cat -A /etc/protocols | head -n 10
Эта команда делает следующее:
catиспользуется для вывода содержимого файла.- Опция
-Aзаставляетcatотображать все символы, включая непечатные. /etc/protocols— это системный файл со списком интернет-протоколов.|передает вывод следующей команде.head -n 10показывает только первые 10 строк.
В выводе вы увидите символы ^I. Они обозначают табуляцию. Символ ^ используется для обозначения управляющих символов, а I (9-я буква алфавита) представляет ASCII-символ табуляции (десятичное значение которого равно 9).
- Теперь воспользуемся
col, чтобы заменить табуляцию пробелами:
cat /etc/protocols | col -x | cat -A | head -n 10
Этот конвейер команд работает так:
cat /etc/protocolsвыводит содержимое файла.|передает данные вcol.col -xпреобразует табуляцию в пробелы. Опция-xкак раз отвечает за это преобразование.- Еще один
|передает результат вcat -Aдля визуализации всех символов. head -n 10ограничивает вывод первыми 10 строками.
Сравните этот результат с предыдущим. Вы заметите, что символы ^I исчезли, а на их месте появились обычные пробелы.
Опция -x крайне полезна, когда нужно обеспечить единообразное форматирование в разных текстовых редакторах или системах, которые могут по-разному интерпретировать табуляцию.
Если вам интересно узнать о других возможностях col, используйте man col. Напоминаем, выход из справочника осуществляется клавишей 'q'.
Использование команды join
Команда join предназначена для объединения строк из двух файлов на основе общего поля. Это похоже на операцию соединения (join) в базах данных. Команда незаменима, когда у вас есть связанные данные, распределенные по разным файлам, и вы хотите собрать их воедино по общему ключу или идентификатору.
Создадим два простых файла и объединим их:
- Создаем первый файл:
echo -e "1 apple\n2 banana\n3 cherry" > fruits.txt
Разбор команды:
echoвыводит текст.-eвключает интерпретацию экранированных символов (например, новой строки).\n— символ новой строки.>перенаправляет вывод в файлfruits.txt.
- Создаем второй файл:
echo -e "1 red\n2 yellow\n3 red" > colors.txt
Так мы получаем еще один файл с теми же номерами, но другими значениями во втором поле.
- Теперь объединим эти файлы:
join fruits.txt colors.txt
Эта команда сопоставит строки из обоих файлов по первому полю (номеру).
Вы должны увидеть такой результат:
1 apple red
2 banana yellow
3 cherry red
Команда join нашла совпадения по первому полю (числа 1, 2, 3) и объединила остальные данные из обоих файлов в одну строку.
- Вы также можете указать, какие именно поля использовать для объединения. Например:
join -1 2 -2 2 <(sort -k2 fruits.txt) <(sort -k2 colors.txt)
Эта более сложная команда делает следующее:
-1 2указывает использовать второе поле первого файла.-2 2указывает использовать второе поле второго файла.<(...)— это подстановка процесса, позволяющая использовать вывод команды там, где ожидается имя файла.sort -k2сортирует файл по второму полю.
Нам нужно сначала отсортировать файлы, так как join требует, чтобы входные данные были упорядочены по тем полям, по которым происходит объединение.
Эта команда может не выдать ничего, если во вторых полях файлов нет совпадений. Это нормальное поведение join.
Чтобы увидеть, как работает сортировка, попробуйте выполнить эти команды отдельно:
sort -k2 fruits.txt
sort -k2 colors.txt
Помните: join очень чувствителен к порядку строк. Если файлы не отсортированы по ключевому полю, результат может быть непредсказуемым или пустым.
Работа с командой paste
Команда paste используется для слияния строк файлов. В отличие от join, ей не нужно общее поле. Она полезна, когда вы просто хотите соединить файлы «бок о бок» или создать таблицу из нескольких файлов.
Посмотрим, как работает paste:
- Создадим три простых файла:
echo -e "apple\nbanana\ncherry" > fruits.txt
echo -e "red\nyellow\nred" > colors.txt
echo -e "sweet\nsweet\nsweet" > tastes.txt
Теперь у нас есть три файла, в каждом по три строки.
- Используем
pasteдля их слияния:
paste fruits.txt colors.txt tastes.txt
Команда объединит строки из всех трех файлов горизонтально. Вы увидите:
apple red sweet
banana yellow sweet
cherry red sweet
По умолчанию paste использует символ табуляции в качестве разделителя.
- Мы можем указать другой разделитель:
paste -d ':' fruits.txt colors.txt tastes.txt
Опция -d ':' заставляет paste использовать двоеточие вместо табуляции. Результат:
apple:red:sweet
banana:yellow:sweet
cherry:red:sweet
- Наконец, попробуем опцию
-s, которая выполняет последовательное слияние:
paste -s fruits.txt colors.txt tastes.txt
Опция -s (serialize) объединяет содержимое каждого файла в одну длинную строку. Вы увидите:
apple banana cherry
red yellow red
sweet sweet sweet
Здесь каждая строка вывода — это полное содержимое одного файла.
Операции paste очень удобны при подготовке данных: например, для объединения логов, создания CSV-файлов или форматирования данных для других программ.
Если хотите изучить дополнительные параметры, используйте man paste.
Немного развлечений с текстом
Теперь, когда вы освоили команды обработки текста, давайте немного развлечемся! Мы установим и запустим текстовую игру Space Invaders. Это наглядно покажет, как творчески можно использовать обработку текста в среде Linux.
- Сначала обновим список пакетов:
sudo apt-get update
Эта команда обновляет информацию о доступных пакетах и их версиях. Это правило хорошего тона перед установкой любого ПО.
sudoзапускает команду с правами суперпользователя.apt-get— утилита управления пакетами в Ubuntu.updateприказывает обновить базу данных пакетов.
- Теперь установим игру:
sudo apt-get install ninvaders -y
installдает команду на установку.ninvaders— название нужного нам пакета.-yавтоматически подтверждает установку (отвечает "yes" на все вопросы).
Если вам интересно узнать больше об apt-get, загляните в man apt-get.
- После завершения установки запустите игру:
ninvaders
Эта команда запускает Space Invaders. Как играть:
- Используйте стрелки «влево» и «вправо» для перемещения корабля.
- Нажимайте «пробел», чтобы стрелять.
- Нажмите 'p', чтобы поставить игру на паузу.
- Нажмите 'q', чтобы выйти.
Попробуйте поиграть пару минут. Сможете ли вы побить рекорд?

Эта игра — отличный пример того, как можно манипулировать текстом для создания интерактивного интерфейса в терминале. Она использует простые ASCII-символы для изображения кораблей, пришельцев и снарядов, доказывая, что даже сложные взаимодействия можно реализовать с помощью обычного текста.
Когда закончите, не забудьте выйти из игры, нажав 'q'.
Резюме
В ходе этого эксперимента вы познакомились с несколькими мощными командами обработки текста в Linux:
tr: Для замены или удаления символов. Вы использовали её для удаления знаков, устранения дубликатов и смены регистра.col: Для преобразования табуляции в пробелы. Вы научились просматривать и изменять невидимые символы в системных файлах.join: Для объединения строк из двух файлов по общему полю. Вы создали файлы и связали их данные.paste: Для слияния строк файлов. Вы научились объединять данные из разных источников в различных форматах.
Эти команды — базовые инструменты в арсенале любого пользователя Linux. Их можно комбинировать для эффективного анализа и трансформации текстовых данных. Вот основные выводы:
- В Linux всё является файлом, и большинство конфигураций хранится в текстовом виде.
- Символ конвейера (
|) — мощное средство для связывания команд в цепочки. - Большинство команд Linux следуют единой структуре:
команда [опции] аргументы. - Справочные страницы (команда
man) — лучший ресурс для глубокого изучения любого инструмента.
Наконец, мы увидели творческую сторону работы с текстом, установив игру в терминале. Это демонстрирует универсальность текстовой среды Linux — даже интерактивные приложения могут быть построены на одних лишь символах!
По мере вашего продвижения в изучении Linux эти навыки обработки текста окажутся бесценными в системном администрировании, анализе данных и программировании. Продолжайте практиковаться, и вы станете настоящим экспертом!
Помните: лучший способ научиться — это практика. Не бойтесь экспериментировать с командами и их опциями. Удачи в обработке текста!



