Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 如何根据开始/停止字符从存储在变量中的字符串中提取子字符串_String_Bash_Shell_Character - Fatal编程技术网

String 如何根据开始/停止字符从存储在变量中的字符串中提取子字符串

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

在第一行中,我在值64F2DD65

我想通过从变量中的字符串中读取数据来捕获第一个变量,首先从行的开头一直到
字符,然后从
#
字符后面读取另一个变量,并向前读取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