скопировать или обрезать в строке определённое слово, символы

Рейтинг: 0Ответов: 1Опубликовано: 16.05.2023
  s="start_string_end"
  var1=${s%string*} #До стринг
  var2=${s#*string} #После стринг

например эта вещь вырезает до стринг и после, а нужен сам стринг((

Ответы

▲ 0

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

s="start_string_end"
$ v1=${s%_*} # отрезали конец
$ echo $v1
start_string
$ v2=${v1#*_} # отрезали начало и получили string
$ echo $v2
string

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

a=( ${s//_/ } )
$ echo ${a[@]}
start string end
$ echo ${a[1]}
string

Но этот метод не сработает или потребует дополнительных ухищрений если string содержит пробелы.

Использовать регулярное выражение:

$ [[ $s =~ .+_(.+)_.+ ]] && echo ${BASH_REMATCH[1]}
string

Или просто сказать string='string')