String 如何根据开始/停止字符从存储在变量中的字符串中提取子字符串
在第一行中,我在值64和F2DD65 我想通过从变量中的字符串中读取数据来捕获第一个变量,首先从行的开头一直到String 如何根据开始/停止字符从存储在变量中的字符串中提取子字符串,string,bash,shell,character,String,Bash,Shell,Character,在第一行中,我在值64和F2DD65 我想通过从变量中的字符串中读取数据来捕获第一个变量,首先从行的开头一直到:字符,然后从#字符后面读取另一个变量,并向前读取6个字符。 这可能吗 这是字符串: var="64: (242,221,101) #F2DD65 srgb(242,221,101)" 我的最终结果将存储在变量中: var1=“64” var2=“F2DD65”sed-rn的/(^.*)(\:.*)(.*)(.*)([[:space:].$)/\1-\3/p>,带b
:
字符,然后从#
字符后面读取另一个变量,并向前读取6个字符。
这可能吗
这是字符串:
var="64: (242,221,101) #F2DD65 srgb(242,221,101)"
我的最终结果将存储在变量中:
var1=“64”
var2=“F2DD65”
sed-rn的/(^.*)(\:.*)(.*)(.*)([[:space:].$)/\1-\3/p>,带bash正则表达式:
var="64: (242,221,101) #F2DD65 srgb(242,221,101)"
re="^([^:]+): .* #([[:xdigit:]]+)"
if [[ $var =~ $re ]]; then
var1="${BASH_REMATCH[1]}"
var2="${BASH_REMATCH[2]}"
else
# String isn't the right format
echo Fail
fi
var1=${var%%:*}
var2=${var####*#}
var2=${var2%%*}
参考文献:
awk -F [:#\ ] '{ print $1" - "$5 }' <<< "64: (242,221,101) #F2DD65 srgb(242,221,101)"
var="64: (242,221,101) #F2DD65 srgb(242,221,101)"
re="^([^:]+): .* #([[:xdigit:]]+)"
if [[ $var =~ $re ]]; then
var1="${BASH_REMATCH[1]}"
var2="${BASH_REMATCH[2]}"
else
# String isn't the right format
echo Fail
fi