Разрушение манипуляций со строками в Bash
При работе со сценариями оболочки частой задачей является разделение строки по разделителю. Например, рассмотрим строку, содержащую адреса электронной почты, разделенные точкой с запятой. Если вам нужно обрабатывать каждое электронное письмо индивидуально, важно понимать, как разделить эту строку. В этой статье вы узнаете о различных методах достижения этой цели в Bash.
Мы рассмотрим такие решения, как использование команды `tr` и управление внутренним разделителем полей (IFS). К концу вы сможете эффективно обрабатывать разделение строк и сбрасывать IFS к значению по умолчанию. Давайте углубимся и упростим ваши задачи по написанию сценариев Bash!
| Команда | Описание |
|---|---|
| tr | Переводит или удаляет символы. Используется здесь для замены точки с запятой символом новой строки для разделения строки. |
| IFS | Внутренний разделитель полей, используемый для разделения строк на основе определенного разделителя в сценариях Bash. |
| read -r -a | Считывает строку ввода и разбивает ее на массив. Опция -r предотвращает интерпретацию обратной косой черты как escape-символов. |
| echo | Выводит текст на стандартный вывод. Используется для отображения элементов разделенной строки. |
| split | Функция Perl, которая делит строку на список строк на основе указанного разделителя. |
| foreach | Структура цикла Perl, которая перебирает список значений. |
Понимание методов разделения строк Bash
Первый сценарий Bash демонстрирует, как разделить строку с помощью команда. Здесь мы определяем строку и использовать в сочетании с tr чтобы перевести разделитель точку с запятой в символ новой строки. Это эффективно разбивает строку на отдельные строки. затем цикл перебирает каждую строку, печатая адреса в квадратных скобках. Этот метод прост и использует мощные возможности команд Unix по обработке текста для управления строками.
Другой метод предполагает корректировку . Временно установив до точки с запятой, мы можем разделить строку на массив. Сохраняем оригинал к OIFS прежде чем изменять его, гарантируя, что мы сможем восстановить его позже. команда считывает входную строку в массив с именем , разделив его на основе измененного . После обработки оригинал IFS восстанавливается. Этот подход обеспечивает более программный способ обработки разделения строк в Bash, позволяя нам использовать массивы для дальнейших манипуляций.
Использование Bash для разделения строк по разделителю
Баш-скрипт
#!/usr/bin/env bash# Input stringIN="bla@some.com;john@home.com"# Split string using 'tr' and iteratemails=$(echo $IN | tr ";" "\n")for addr in $mails; doecho "> [$addr]"done# Output:# > [bla@some.com]# > [john@home.com]
Разделение строки в Bash с использованием IFS
Баш-скрипт
#!/usr/bin/env bash# Input stringIN="bla@some.com;john@home.com"# Save the original IFSOIFS=$IFS# Set IFS to semicolonIFS=';'# Split string into an arrayread -r -a mails2 <<< "$IN"# Restore the original IFSIFS=$OIFS# Iterate over the arrayfor x in "${mails2[@]}"; doecho "> [$x]"done# Output:# > [bla@some.com]# > [john@home.com]
Использование Python для разделения строк
Python-скрипт
#!/usr/bin/env python3# Input stringIN = "bla@some.com;john@home.com"# Split string by semicolonmails = IN.split(';')# Iterate and print each elementfor addr in mails:print(f"> [{addr}]")# Output:# > [bla@some.com]# > [john@home.com]
Использование Perl для разделения строки
Перл-скрипт
#!/usr/bin/env perluse strict;use warnings;# Input stringmy $IN = "bla@some.com;john@home.com";# Split string by semicolonmy @mails = split(';', $IN);# Iterate and print each elementforeach my $addr (@mails) {print "> [$addr]\n";}# Output:# > [bla@some.com]# > [john@home.com]
Продвинутые методы разделения строк в Bash
Еще один мощный метод разделения строк в Bash включает использование команда. — это универсальная утилита командной строки, предназначенная для сканирования и обработки шаблонов. Это может быть особенно полезно для разделения строк, поскольку позволяет нам определять собственные разделители полей. Например, мы можем использовать чтобы разделить строку на основе разделителя точка с запятой и распечатать отдельные компоненты. Этот метод очень гибок и может решать более сложные задачи по манипулированию строками, что делает его ценным инструментом в наборе инструментов программиста Bash.
Кроме того, Команда может использоваться для разделения строк на основе разделителей. Команда обычно используется для извлечения разделов из каждой строки входных данных. Указав разделитель с помощью и выбрав поля с помощью -f вариант, мы можем эффективно разбивать и извлекать части строки. Например, используя извлечет первый адрес электронной почты из входной строки. Эти продвинутые методы обеспечивают больший контроль и точность при выполнении задач по манипулированию строками в Bash.
- Как разделить строку по разделителю в Bash?
- Вы можете использовать переменная или команды типа , , и cut для разделения строк по разделителю.
- Что переменная в Bash?
- (Внутренний разделитель полей) — это специальная переменная, определяющая символы, используемые для разделения входного текста на слова или токены.
- Как я могу сбросить переменной к значению по умолчанию?
- Сохранить оригинал значение перед его изменением и восстановить его после обработки: .
- Что это команда делает при разделении строк?
- команда переводит или удаляет символы. Он может заменять разделители символами новой строки, чтобы разделить строку: .
- Могу ли я разделить строку на массив с помощью Bash?
- Да, изменив переменная и использование вы можете разделить строку на массив:
- Что команда используется для?
- — это утилита командной строки для сканирования и обработки шаблонов. Он может разделять строки, определяя настраиваемые разделители полей.
- Как командная работа?
- Команда извлекает разделы из каждой строки ввода. Он может разделять строки, указав разделитель и выбрав поля: .
- Почему используется полезно при разделении строк?
- С использованием позволяет вам определять собственные разделители для разделения строк, что делает его универсальным для разных форматов ввода.
- Можно ли разделить строку на несколько разделителей в Bash?
- Да, вы можете использовать комбинацию и для обработки нескольких разделителей.
- Могу ли я использовать для разделения строк в Bash?
- Пока это прежде всего потоковый редактор, его можно комбинировать с другими командами, такими как для косвенного разделения строк.
Освоение манипуляций со строками в Bash может значительно повысить эффективность написания сценариев. Используете ли вы для простых разделителей или более продвинутых инструментов, таких как и Эти методы необходимы для эффективного программирования на Bash. Не забывайте всегда восстанавливать оригинал IFS чтобы избежать неожиданного поведения в ваших сценариях. С помощью этих методов вы можете решать широкий спектр задач по обработке строк в ваших сценариях Bash.