Перевод символов в Linux

LinuxLinuxBeginner
Практиковаться сейчас

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

Введение

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

В этом практическом занятии (лабораторной работе) вы научитесь использовать команду tr для различных задач обработки текста. Вы рассмотрите три основные функциональности: перевод символов из одного набора в другой, удаление нежелательных символов и сжатие повторяющихся символов. Эти навыки являются важными для эффективной обработки текста и очистки данных в среде Linux.

К концу этого практического занятия (лабораторной работы) вы сможете уверенно использовать команду tr для преобразования текстовых данных в соответствии с вашими требованиями, что сделает ваши задачи по обработке текста более эффективными и точными.

Это Guided Lab, который предоставляет пошаговые инструкции, чтобы помочь вам учиться и практиковаться. Внимательно следуйте инструкциям, чтобы выполнить каждый шаг и получить практический опыт. Исторические данные показывают, что это лабораторная работа уровня начальный с процентом завершения 100%. Он получил 100% положительных отзывов от учащихся.

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) linux/BasicSystemCommandsGroup -.-> linux/echo("Text Display") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/TextProcessingGroup -.-> linux/tr("Character Translating") subgraph Lab Skills linux/echo -.-> lab-271411{{"Перевод символов в Linux"}} linux/cat -.-> lab-271411{{"Перевод символов в Linux"}} linux/tr -.-> lab-271411{{"Перевод символов в Linux"}} end

Понимание базовой команды tr

В Linux команда tr используется для перевода, удаления или сжатия символов из стандартного ввода и вывода результата в стандартный вывод. На этом этапе вы узнаете базовый синтаксис команды tr и научитесь использовать ее для преобразования строчных букв в заглавные.

Базовый синтаксис команды tr

Базовый синтаксис команды tr выглядит следующим образом:

tr [OPTION]... SET1 [SET2]

Где:

  • SET1 - это набор символов, которые будут переведены или удалены.
  • SET2 - это набор символов, которые заменят символы из SET1.

Создание примерного текстового файла

Начнем с создания примерного текстового файла для практики. Откройте терминал в виртуальной машине LabEx и выполните следующую команду:

echo 'industrial revolution' > ~/project/sample.txt

Эта команда создает новый файл с именем sample.txt в директории /home/labex/project с текстом "industrial revolution".

Преобразование строчных букв в заглавные

Теперь используем команду tr для преобразования всех строчных букв в заглавные:

tr 'a-z' 'A-Z' < ~/project/sample.txt

При выполнении этой команды вы должны увидеть следующий вывод:

INDUSTRIAL REVOLUTION

Понимание команды

Разберем, что произошло:

  • tr 'a-z' 'A-Z' информирует команду заменить каждую строчную букву (a-z) на соответствующую заглавную букву (A-Z).
  • Символ < перенаправляет содержимое файла ~/project/sample.txt в качестве входных данных для команды tr.
  • Результат отображается в терминале, но не сохраняется в файл.

Сохранение вывода в новый файл

Если вы хотите сохранить преобразованный текст в новый файл, вы можете использовать перенаправление вывода:

tr 'a-z' 'A-Z' < ~/project/sample.txt > ~/project/uppercase_sample.txt

Для проверки содержимого нового файла используйте команду cat:

cat ~/project/uppercase_sample.txt

Вы должны увидеть:

INDUSTRIAL REVOLUTION

Теперь вы успешно научились использовать базовую функциональность команды tr для преобразования текста из строчных букв в заглавные.

Удаление символов с помощью команды tr

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

Опция удаления в команде tr

Для удаления символов с помощью команды tr используется опция -d, за которой следует набор символов, которые вы хотите удалить:

tr -d SET1

Где SET1 - это набор символов, которые вы хотите удалить.

Создание примерного текстового файла с числами

Создадим примерный файл, содержащий текст с числами, который можно использовать для практики:

echo 'Factory 1 Output: 100 units, Factory 2 Output: 150 units' > ~/project/factory_output.txt

Эта команда создает файл с именем factory_output.txt в директории /home/labex/project с текстом, включающим числа.

Удаление цифр из текста

Теперь используем команду tr с опцией -d для удаления всех цифр из текста:

tr -d '0-9' < ~/project/factory_output.txt

При выполнении этой команды вы должны увидеть следующий вывод:

Factory  Output:  units, Factory  Output:  units

Обратите внимание, что все числа (1, 2, 100, 150) были удалены из текста.

Понимание команды

Разберем, что произошло:

  • tr -d '0-9' информирует команду удалить все символы в диапазоне от 0 до 9 (то есть все цифры).
  • Символ < перенаправляет содержимое файла ~/project/factory_output.txt в качестве входных данных для команды tr.
  • Результат отображается в терминале, но не сохраняется в файл.

Сохранение вывода в новый файл

Если вы хотите сохранить вывод без цифр в новый файл, вы можете использовать перенаправление вывода:

tr -d '0-9' < ~/project/factory_output.txt > ~/project/no_digits_output.txt

Для проверки содержимого нового файла используйте команду cat:

cat ~/project/no_digits_output.txt

Вы должны увидеть:

Factory  Output:  units, Factory  Output:  units

Удаление нескольких наборов символов

Вы также можете удалить несколько типов символов в одной команде. Например, удалим и цифры, и пунктуацию:

tr -d '0-9:,;' < ~/project/factory_output.txt

Это удалит все цифры (от 0 до 9), а также двоеточия, запятые и точки с запятой из текста.

Теперь вы знаете, как использовать команду tr для удаления определенных символов из текста, что является ценным навыком для очистки данных и обработки текста в Linux.

Сжатие символов с помощью команды tr

Еще одной полезной возможностью команды tr является ее способность "сжимать" повторяющиеся символы, заменяя последовательные вхождения одного и того же символа на один экземпляр. Эта функциональность особенно ценна при работе с текстом, содержащим избыточные пробелы или другие повторяющиеся символы.

Опция сжатия в команде tr

Для сжатия повторяющихся символов с помощью команды tr используется опция -s, за которой следует набор символов, которые вы хотите сжать:

tr -s SET1

Где SET1 - это набор символов, которые вы хотите сжать.

Создание примерного текстового файла с избыточными пробелами

Создадим примерный файл с избыточными пробелами, который можно использовать для практики:

echo 'Error:    Too much    whitespace.' > ~/project/whitespace.txt

Эта команда создает файл с именем whitespace.txt в директории /home/labex/project с текстом, включающим несколько последовательных пробелов.

Сжатие пробелов в тексте

Теперь используем команду tr с опцией -s для сжатия нескольких пробелов в один:

tr -s ' ' < ~/project/whitespace.txt

При выполнении этой команды вы должны увидеть следующий вывод:

Error: Too much whitespace.

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

Понимание команды

Разберем, что произошло:

  • tr -s ' ' информирует команду сжать повторяющиеся вхождения символа пробела в один пробел.
  • Символ < перенаправляет содержимое файла ~/project/whitespace.txt в качестве входных данных для команды tr.
  • Результат отображается в терминале, но не сохраняется в файл.

Сохранение вывода в новый файл

Если вы хотите сохранить текст с сжатыми пробелами в новый файл, вы можете использовать перенаправление вывода:

tr -s ' ' < ~/project/whitespace.txt > ~/project/clean_whitespace.txt

Для проверки содержимого нового файла используйте команду cat:

cat ~/project/clean_whitespace.txt

Вы должны увидеть:

Error: Too much whitespace.

Комбинирование операций команды tr

Команда tr позволяет комбинировать операции. Например, вы можете одновременно переводить символы и сжимать их в одной команде:

tr 'a-z' 'A-Z' -s ' ' < ~/project/whitespace.txt

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

Создание более сложного примера

Создадим более сложный пример для практики:

echo 'log     entry:   error   code  404   not     found' > ~/project/complex.txt

Теперь используем tr для преобразования всех букв в заглавные и сжатия пробелов:

tr 'a-z' 'A-Z' -s ' ' < ~/project/complex.txt > ~/project/processed_complex.txt

Для просмотра результата:

cat ~/project/processed_complex.txt

Вы должны увидеть:

LOG ENTRY: ERROR CODE 404 NOT FOUND

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

Комбинирование операций команды tr для продвинутого преобразования текста

На этом этапе вы узнаете, как комбинировать несколько операций команды tr для выполнения более продвинутых преобразований текста. Возможность объединять разные операции делает tr универсальным инструментом для сложных задач обработки текста.

Создание примерного файла с данными

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

echo 'User123: [email protected] - Last Login: 2023-10-15' > ~/project/user_data.txt

Эта команда создает новый файл с именем user_data.txt в директории /home/labex/project с примерной записью о пользователе.

Несколько операций с использованием конвейеров (pipes)

Одним из способов выполнения нескольких преобразований является использование конвейеров для объединения команд tr:

cat ~/project/user_data.txt | tr 'A-Z' 'a-z' | tr -d '0-9' | tr -s ' '

Эта команда выполнит следующие действия:

  1. Преобразует все заглавные буквы в строчные
  2. Удалит все цифры
  3. Сожмет последовательные пробелы в один пробел

Вывод должен выглядеть так:

user: [email protected] - last login: --

Использование команды tr с расширенными классами символов

Команда tr поддерживает определенные специальные классы символов, которые могут сделать ваши преобразования более компактными. Некоторые общие классы символов включают:

  • [:alnum:] - Все буквы и цифры
  • [:alpha:] - Все буквы
  • [:digit:] - Все цифры
  • [:lower:] - Все строчные буквы
  • [:upper:] - Все заглавные буквы
  • [:space:] - Все пробельные символы

Используем эти классы символов для преобразования наших данных о пользователе:

tr '[:upper:]' '[:lower:]' < ~/project/user_data.txt > ~/project/lowercase_user_data.txt

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

Для проверки содержимого нового файла:

cat ~/project/lowercase_user_data.txt

Вы должны увидеть:

user123: [email protected] - last login: 2023-10-15

Создание комплексного примера

Создадим более сложный файл для практики:

echo '  LOG   ENTRY:  Error-404   Page    Not    Found   (HTTP)  ' > ~/project/log_entry.txt

Теперь выполним несколько преобразований за один раз:

cat ~/project/log_entry.txt | tr '[:upper:]' '[:lower:]' | tr -d '-()' | tr -s ' ' > ~/project/transformed_log.txt

Эта команда выполнит следующие действия:

  1. Преобразует все заглавные буквы в строчные
  2. Удалит дефисы, скобки
  3. Сожмет последовательные пробелы в один пробел

Для просмотра результата:

cat ~/project/transformed_log.txt

Вы должны увидеть:

 log entry: error404 page not found http

Обратите внимание, что по-прежнему есть ведущие и завершающие пробелы. Чтобы удалить их, нам понадобятся дополнительные инструменты, такие как sed или awk, которые выходят за рамки этого практического занятия.

Теперь вы знаете, как комбинировать несколько операций команды tr для выполнения сложных преобразований текста, что делает ваши задачи обработки текста более эффективными.

Резюме

В этом практическом занятии вы узнали, как использовать команду tr, универсальный инструмент для манипуляции текстом в Linux. Вы изучили ее три основные функциональности:

  1. Перевод символов: Вы научились переводить символы из одного набора в другой, например, преобразовывать строчные буквы в заглавные. Эта функциональность полезна для стандартизации форматов текста и нормализации данных.

  2. Удаление символов: Вы узнали, как удалять определенные символы из текста с помощью опции -d. Эта возможность особенно ценна для очистки данных путем удаления нежелательных символов.

  3. Сжатие символов: Вы изучили, как сжимать повторяющиеся символы до одного экземпляра с помощью опции -s. Эта функция особенно полезна при работе с текстом, содержащим избыточные пробелы.

  4. Комбинирование операций: Вы научились комбинировать несколько операций команды tr для эффективного выполнения сложных преобразований текста.

Эти навыки создают прочную основу для обработки текста в Linux-окружениях. Команда tr - мощный инструмент, который, в сочетании с другими командами Linux, такими как grep, sed и awk, позволяет осуществлять сложную манипуляцию текстом для различных задач обработки данных.

Освоив команду tr, вы добавили важный инструмент в свой Linux-инструментарий, который поможет вам более эффективно и точно обрабатывать текстовые данные в будущих проектах.