ZaLinux.ru

Как извлечь часть строки в Bash

Необходимо из строки вырезать подстроку определённой длины. Это можно сделать в терминале. Можно указать позицию начального символа в строке и её длину.

Самый простой способ — это использовать команду cut:

echo "abcdefg" | cut -c3-5

команда вернёт:

cde

С опцией -c команда cut указываются номер первого и последнего символа включительно для вырезаемой подстроки.

Если вы используете Bash (обычно так и есть), то в нём предусмотрены другие способы как вырезать подстроку из строки.

${ПАРАМЕТР:СДВИГ}
${ПАРАМЕТР:СДВИГ:ДЛИНА}

Обратите внимание, что ПАРАМЕТР — это НЕ строка из которой вы хотите извлечь подстроку, это имя переменной!

Рассмотрим следующий пример:

a=abcdefghij
echo ${a:5}

Вывод:

fghij

То есть переменной a присвоено значение abcdefghij и из того значения во второй строке вырезается подстрока, которая начинается с пятого символа и заканчивается последним символом.

Если указать ДЛИНУ, то можно вырезать строку определённой длины, начинающейся с определённого символа:

a=abcdefghij
echo ${a:2:4}

Вывод:

cdef

Если нужно заменить подстроку на строку используйте:

${ПАРАМЕТР//ПОДСТРОКА/ЗАМЕНА}

Пример:

name=file_0456.mp4
echo ${name//file_/song}

Вывод:

song0456.mp4

Если нужно удалить статичную строку:

${ПАРАМЕТР##УДАЛИТЬ_СОВПАВШИЙ_ПРЕФИКС}
${ПАРАМЕТР%%УДАЛИТЬ_СОВПАВШИЙ_СУФФИКС}

Пример с удалением префикса:

name=file_0456.mp4
echo ${name##file_}

Вывод:

0456.mp4

Пример с удалением суффикса:

name=file_0456.mp4
echo ${name%%.mp4}

Вывод:

file_0456

Рекомендуемые статьи:

Оставить комментарий

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