Разделение строки по разделителю в Bash

Bash

Разрушение манипуляций со строками в 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.

  1. Как разделить строку по разделителю в Bash?
  2. Вы можете использовать переменная или команды типа , , и cut для разделения строк по разделителю.
  3. Что переменная в Bash?
  4. (Внутренний разделитель полей) — это специальная переменная, определяющая символы, используемые для разделения входного текста на слова или токены.
  5. Как я могу сбросить переменной к значению по умолчанию?
  6. Сохранить оригинал значение перед его изменением и восстановить его после обработки: .
  7. Что это команда делает при разделении строк?
  8. команда переводит или удаляет символы. Он может заменять разделители символами новой строки, чтобы разделить строку: .
  9. Могу ли я разделить строку на массив с помощью Bash?
  10. Да, изменив переменная и использование вы можете разделить строку на массив:
  11. Что команда используется для?
  12. — это утилита командной строки для сканирования и обработки шаблонов. Он может разделять строки, определяя настраиваемые разделители полей.
  13. Как командная работа?
  14. Команда извлекает разделы из каждой строки ввода. Он может разделять строки, указав разделитель и выбрав поля: .
  15. Почему используется полезно при разделении строк?
  16. С использованием позволяет вам определять собственные разделители для разделения строк, что делает его универсальным для разных форматов ввода.
  17. Можно ли разделить строку на несколько разделителей в Bash?
  18. Да, вы можете использовать комбинацию и для обработки нескольких разделителей.
  19. Могу ли я использовать для разделения строк в Bash?
  20. Пока это прежде всего потоковый редактор, его можно комбинировать с другими командами, такими как для косвенного разделения строк.

Освоение манипуляций со строками в Bash может значительно повысить эффективность написания сценариев. Используете ли вы для простых разделителей или более продвинутых инструментов, таких как и Эти методы необходимы для эффективного программирования на Bash. Не забывайте всегда восстанавливать оригинал IFS чтобы избежать неожиданного поведения в ваших сценариях. С помощью этих методов вы можете решать широкий спектр задач по обработке строк в ваших сценариях Bash.