bash/sh: извлекаем подстроку, ограниченную заданными символами (разделителем), из строки в скриптах




828
bash/sh: извлекаем подстроку, ограниченную заданными символами (разделителем), из строки в скриптах
Рейтинг 8 из 10. Голосов: 268
Ваша оценка:
Задача: из имеющейся строки извлечь подстроку с указанием разделителей с определенным номером. Т.е. например, из строки "ABC,DEF,GHI" извлечь строку "DEF", указав, что это 2я подстрока и разделителем является запятая.


Для этих целей воспользуемся утилитой cut.


a="String1,String2,String3"
echo "${a}" | cut -d ',' -f 2

здесь:
  • -d : указание символа разделителя
  • -f : указание номера подстроки (начиная с 1)

Если нужно извлекать подстроку с разделителем TAB - то параметр -d просто не нужно указывать, т.к. TAB является разделителем по-умолчанию.


Вот еще пример:
a="This is just a test"
b=`echo "${a}" | cut -d ' ' -f 3`
Выводом будет "just".

Вопросы и ответы

V.Semenov
2020-04-28 09:32:02
Спасибо! Это - единственный универсальный способ извлечения подстроки. Он работает везде,- от RedHat 7.1 до Ubuntu и Mint. А все остальные типа expr, (substr:n:len) ограниченно работоспособны и явно зависят от версии Bash.

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

ответить