Кто может — грабит, кто не может — ворует (Д.И. Фонвизин).

4 мин для чтенияСтроковые операции в Bash

FavoriteLoadingДобавить в избранное
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
6 августа 2020
Bash Heredoc
Давайте поработаем со строками!

Если вы знакомы с переменными в bash, вы уже знаете, что не существует отдельных типов данных для строк, int и т. д. Все является переменной.

Но это не значит, что у вас нет функций манипулирования строками.

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

 

Получить длину строки

Начнем с получения длины строки в bash.

Строка – это не что иное, как последовательность (массив) символов. Создадим строку с именем distro и инициализируем ее значением «Ubuntu».

distro="Ubuntu"

 

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

Excelent@andreyex:~/scripts$ echo ${#distro}
6

 

Обратите внимание, что команда echo предназначена для печати значения {#string} это то, что дает длину строки.

 

Соединение двух строк

Вы можете добавить строку в конец другой строки; этот процесс называется конкатенацией строк.

Для демонстрации давайте сначала создадим две строки str1 и str2 следующим образом:

str1="And"
str2="reyEx"

 

Теперь вы можете объединить обе строки и присвоить результат новой строке с именем str3 следующим образом:

str3=$str1$str2

 

Не может быть проще, не так ли?

 

Поиск подстрок

Вы можете найти позицию (индекс) конкретной буквы или слова в строке. Для демонстрации давайте сначала создадим строку с именем str следующим образом:

str="Bash is Cool"

 

Теперь вы можете получить конкретную позицию (индекс) подстроки cool. Для этого используйте команду expr:

Excelent@andreyex:~/scripts$ word="Cool"
Excelent@andreyex:~/scripts$ expr index "$str" "$word"
9

Результат 9 – это индекс, с которого начинается слово «Cool» в строке str.

Мы сознательно избегаем использования условных операторов, таких как if, else, потому что в этой серии статей для начинающих bash условные операторы будут рассмотрены позже.

 

Извлечение подстрок

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

Читать  Как настроить SSH ключи в Debian 10

Для демонстрации давайте сначала создадим строку с именем foss следующим образом:

foss="Fedora is a free operating system"

 

Теперь предположим, что вы хотите извлечь первое слово «Fedora» в строке foss. Вам необходимо указать начальную позицию (индекс) желаемой подстроки и количество символов, которые вам нужно извлечь.

Следовательно, чтобы извлечь подстроку «Fedora», вы будете использовать 0 в качестве начальной позиции, и вы извлечете 6 символов из начальной позиции:

Excelent@andreyex:~/scripts$ echo ${foss:0:6}
Fedora

 

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

Например, чтобы извлечь подстроку «свободная операционная система» из строки foss ; нам нужно только указать начальную позицию 12:

Excelent@andreyex:~/scripts$ echo ${foss:12}
free operating system

 

Замена подстрок

Вы также можете заменить подстроку другой подстрокой; например, вы можете заменить «Fedora» на «Ubuntu» в строке foss следующим образом:

Excelent@andreyex:~/scripts$ echo ${foss/Fedora/Ubuntu}
Ubuntu is a free operating system

 

Давайте рассмотрим другой пример, давайте заменим подстроку «бесплатно» на «популярные»:

Excelent@andreyex:~/scripts$ echo ${foss/free/popular}
Fedora is a popular operating system

 

Поскольку вы просто печатаете значение с помощью команды echo, исходная строка не изменяется.

 

Удаление подстрок

Вы также можете удалить подстроки. Чтобы продемонстрировать, давайте сначала создадим строку с именем fact следующим образом:

fact="Sun is a big star"

 

Теперь вы можете удалить подстроку big из строки fact:

Excelent@andreyex:~/scripts$ echo ${fact/big}
Sun is a star

 

Создадим еще одну строку с именем cell:

cell="112-358-1321"

 

Теперь предположим, что вы хотите удалить все тире из строки ячейки; следующий оператор удалит только первое вхождение тире в строке ячейки:

Excelent@andreyex:~/scripts$ echo ${cell/-}
112358-1321

 

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

Excelent@andreyex:~/scripts$ echo ${cell//-}
1123581321

 

Обратите внимание, что вы используете эхо-операторы, поэтому строка ячейки не повреждена и не изменена; вы просто демонстрируете желаемый результат!

Читать  Планирование заданий в Linux с помощью команды at

Чтобы изменить строку, вам нужно вернуть результат в строку следующим образом:

Excelent@andreyex:~/scripts$ echo $cell
112-358-1321
Excelent@andreyex:~/scripts$ cell=${cell//-}
Excelent@andreyex:~/scripts$ echo $cell
1123581321

 

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

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

legend="john nash"
actor="JULIA ROBERTS"

 

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

Excelent@andreyex:~/scripts$ echo ${legend^^}
JOHN NASH

 

Вы также можете преобразовать все буквы в строке актера в нижний регистр:

Excelent@andreyex:~/scripts$ echo ${actor,,}
julia roberts

 

Вы также можете преобразовать только первый символ строки легенды в верхний регистр следующим образом:

Excelent@andreyex:~/scripts$ echo ${legend^}
John nash

 

Точно так же вы можете преобразовать только первый символ строки актера в нижний регистр следующим образом:

Excelent@andreyex:~/scripts$ echo ${actor,}
jULIA ROBERTS

 

Вы также можете изменить некоторые символы в строке на верхний или нижний регистр; например, вы можете изменить буквы jи nна верхний регистр в строке легенды следующим образом:

Excelent@andreyex:~/scripts$ echo ${legend^^[jn]}
JohN Nash

 

На этом мы подошли к концу этой статьи из серии bash для начинающих. Надеюсь, вам понравилось манипулировать строками в bash.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

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

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам:

Заполните форму и наш менеджер перезвонит Вам в самое ближайшее время!

badge
Обратный звонок 1
Отправить
galka

Спасибо! Ваша заявка принята

close
galka

Спасибо! Ваша заявка принята

close