Разрушение манипуляций со строками в 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 string
IN="bla@some.com;john@home.com"
# Split string using 'tr' and iterate
mails=$(echo $IN | tr ";" "\n")
for addr in $mails; do
echo "> [$addr]"
done
# Output:
# > [bla@some.com]
# > [john@home.com]
Разделение строки в Bash с использованием IFS
Баш-скрипт
#!/usr/bin/env bash
# Input string
IN="bla@some.com;john@home.com"
# Save the original IFS
OIFS=$IFS
# Set IFS to semicolon
IFS=';'
# Split string into an array
read -r -a mails2 <<< "$IN"
# Restore the original IFS
IFS=$OIFS
# Iterate over the array
for x in "${mails2[@]}"; do
echo "> [$x]"
done
# Output:
# > [bla@some.com]
# > [john@home.com]
Использование Python для разделения строк
Python-скрипт
#!/usr/bin/env python3
# Input string
IN = "bla@some.com;john@home.com"
# Split string by semicolon
mails = IN.split(';')
# Iterate and print each element
for addr in mails:
print(f"> [{addr}]")
# Output:
# > [bla@some.com]
# > [john@home.com]
Использование Perl для разделения строки
Перл-скрипт
#!/usr/bin/env perl
use strict;
use warnings;
# Input string
my $IN = "bla@some.com;john@home.com";
# Split string by semicolon
my @mails = split(';', $IN);
# Iterate and print each element
foreach 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.