Поиск по сайту:
Если мысли не помещаются в голове, заархивируйте их. (Неизвестный автор)

Как разделить строку в скрипте Bash

27.04.2019

В этой статье вы научитесь разбивать строку на массив в скрипте Bash.

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

Вы можете разделить строки в bash, используя разделитель внутренних полей (IFS) и команду чтения, или вы можете использовать команду обрезки. Позвольте нам показать вам, как это сделать на примерах.

 

Метод 1: Разделить строку с помощью команды чтения в Bash

Вот наш пример сценария для разделения строки с помощью команды read:

#!/bin/bash
#
# Скрипт для разделения строки на основе разделителя

my_string="Ubuntu;Linux Mint;Debian;Arch;Fedora"
IFS=';' read -ra my_array <<< "$my_string"

# Печать разделенной строки
for i in "${my_array[@]}"
do
    echo $i
done

 

Часть, которая разбивает строку, находится здесь:

IFS=';' read -ra my_array <<< "$my_string"

 

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

IFS в команде read разделяет входные данные в разделителе. Команда read читает необработанный ввод (опция -r), поэтому интерпретирует обратную косую черту буквально, а не обрабатывает их как escape-символ. Опция -a с командой read сохраняет слово read в массиве.

Проще говоря, длинная строка разбивается на несколько слов, разделенных разделителем, и эти слова хранятся в массиве.

Теперь вы можете получить доступ к массиву, чтобы получить любое слово, которое вы хотите, или использовать цикл for в bash, чтобы напечатать все слова одно за другим, как мы делали в приведенном выше сценарии.

Вот вывод вышеприведенного скрипта:

Ubuntu
Linux Mint
Debian
Arch
Fedora

 

Способ 2: разделить строку с помощью команды trim в Bash

Это пример разделения строки bash с использованием команды trim (tr):

#! / bin / bash 
# 
# Скрипт для разделения строки на основе разделителя 

my_string="Ubuntu;Linux Mint;Debian;Arch;Fedora"  
my_array=($(echo $my_string | tr ";" "\n"))

#Print the split string
for i in "${my_array[@]}"
do
    echo $i
done

 

Этот пример почти такой же, как и предыдущий. Вместо команды чтения, команда trim используется для разделения строки на разделителе.

Проблема с этим подходом состоит в том, что элемент массива разделен на «пробел». Из-за этого такие элементы, как «Linux Mint», будут рассматриваться как два слова.

Вот вывод вышеприведенного скрипта:

Ubuntu
Linux
Mint
Debian
Arch
Fedora

 

Вот почему мы предпочитаем первым способом разбивать строку в bash.

Мы надеемся, что эта краткая статья по bash помогла вам разбить строку.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (3 оценок, среднее: 5,00 из 5)
Загрузка...
Поделиться в соц. сетях:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Читайте также

Спасибо!

Теперь редакторы в курсе.