1-е решение: , если вы в порядке с awk
, не могли бы вы попробовать потом.
echo "foo [string] bar" | awk -F"[][]" '{print $2}'
2-е решение: С sed
Попробуйте:
echo "foo [string] bar" | sed 's/\([^[]*\)\[\([^]]*\)\(.*\)/\2/'
3-е решение:
echo "foo [string] bar" | awk '{sub(/[^[]*/,"");sub(/\[/,"");sub(/\].*/,"")} 1'
4-е решение: Учитывая, что ваша переменная будет иметь только 1 набор [
и ]
, если это так, то вам поможет следующий простейший вариант.
echo "foo [string] bar" | sed 's/.*\[//;s/\].*//'
5-е решение: Использование здесь match
функции awk
.
echo "foo [string] bar" | awk 'match($0,/\[[^]]*/){print substr($0,RSTART+1,RLENGTH-1)}'