У меня есть строка:печать подстроку в Баш скрипт
baselin[email protected]/vobs/tlv_pvob
Я пытаюсь получить в переменную с subtring недо знака «@» это возможно?
У меня есть строка:печать подстроку в Баш скрипт
baselin[email protected]/vobs/tlv_pvob
Я пытаюсь получить в переменную с subtring недо знака «@» это возможно?
Использование регулярных выражений BASH:
baselin[email protected]/vobs/tlv_pvob
[[ "$baseline" =~ ^([^@]+) ]] && myvar="${BASH_REMATCH[1]}"
echo "$myvar"
RAVENPLAT1.5.5.0_1.5.5.0-318_CHASSIS_PKG_193_15-AUG-2014_0350
ИЛИ еще с помощью BASH струнные манипуляции:
myvar="${baseline%%@*}"
Спасибо, что она работает – user3502786
Добро пожаловать, рад, что это сработало. – anubhava
Использование параметра расширения:
$ baselin[email protected]/vobs/tlv_pvob
$ echo "${baseline%%@*}"
RAVENPLAT1.5.5.0_1.5.5.0-318_CHASSIS_PKG_193_15-AUG-2014_0350
Спасибо, что он работает – user3502786
@JohnB 'b = foo @ bar @ baz; echo "($ {b% @ *})" -> (foo @ bar); echo "($ {b %% @ *})" -> foo'. Итак, нет, вам нужно '%%' здесь. Предполагая, что вы хотите до первого '@', а не до последнего '@'. –
+1 Вы также можете просто сделать это с помощью '$ {baseline% @ *}', поскольку '*' соответствует всем значениям после '@'. –
Попробуйте что-то вроде
x = "baselin[email protected]/vobs/tlv_pvob"
y = "@"
z = ${x/$y*/$y}
Не тестировался - может быть, последний символ из г будет удален с помощью что-того похожего на:
${z:0:-1}
Спасибо, что он работает – user3502786
Надеется, что вы имеете только 1 @ в вашей строке -
[email protected]
echo ` echo $a | tr @ ' ' | awk '{print $1}'`
Что означает tr? – user3502786
tr переводится или заменяется, я заменял @ пространством - сделал его как 2 (или более) строки и применял awk для получения 1-го столбца/строки. Подробнее tr [link] http://www.computerhope.com/unix/utr.htm – shamik
является 'baseline' переменного ? –
Да, который держит эту строку ... – user3502786