从 bash 字符串中获取(不剪切)特定子字符串
Getting (not cutting) specific substring from bash string
我想从字符串 "VALUE3,VALUE2,VALUE4,VALUE9"
中获取子字符串 VALUE1 或 VALUE2,如果有 none 个,那么我的 $VAR 应该为空。
我的字符串不能同时有两个子字符串,所以我们只有 3 种可能性。
VAR=VALUE1
VAR=VALUE2
VAR=NULL
我想像这样在一行中完成:
STRING="VALUE3,VALUE2,VALUE4,VALUE9,VALUE7"
VAR=`echo $STRING | grep -P "(VALUE1|VALUE2)"`
echo $VAR
VALUE2
如果找到 VALUE1
或 VALUE2
none 个,这将打印 NULL。
echo "VALUE3,VALUE1,VALUE4,VALUE9" | awk '
{
if(match([=10=],/VALUE[12],|VALUE[12]$/)){
val=substr([=10=],RSTART,RLENGTH)
sub(/,/,"",val)
print val
}
else{
print "NULL"
}
}'
或将其放入变量中,如:
VAR=$(echo "VALUE3,VALUE1,VALUE4,VALUE9" | awk '{if(match([=11=],/VALUE[12],|VALUE[12]$/)){val=substr([=11=],RSTART,RLENGTH);sub(/,/,"",val);print val} else{print "NULL"}}')
echo "$VAR"
VALUE1
在既不是 VALUE1
也不是 VALUE2
的情况下在输出中获得 NULL
的示例:
VAR=$(echo "VALUE3,VALUE12,VALUE4,VALUE9" | awk '{if(match([=12=],/VALUE[12],|VALUE[12]$/)){val=substr([=12=],RSTART,RLENGTH);sub(/,/,"",val);print val} else{print "NULL"}}')
echo "$VAR"
NULL
我想从字符串 "VALUE3,VALUE2,VALUE4,VALUE9"
中获取子字符串 VALUE1 或 VALUE2,如果有 none 个,那么我的 $VAR 应该为空。
我的字符串不能同时有两个子字符串,所以我们只有 3 种可能性。
VAR=VALUE1
VAR=VALUE2
VAR=NULL
我想像这样在一行中完成:
STRING="VALUE3,VALUE2,VALUE4,VALUE9,VALUE7"
VAR=`echo $STRING | grep -P "(VALUE1|VALUE2)"`
echo $VAR
VALUE2
如果找到 VALUE1
或 VALUE2
none 个,这将打印 NULL。
echo "VALUE3,VALUE1,VALUE4,VALUE9" | awk '
{
if(match([=10=],/VALUE[12],|VALUE[12]$/)){
val=substr([=10=],RSTART,RLENGTH)
sub(/,/,"",val)
print val
}
else{
print "NULL"
}
}'
或将其放入变量中,如:
VAR=$(echo "VALUE3,VALUE1,VALUE4,VALUE9" | awk '{if(match([=11=],/VALUE[12],|VALUE[12]$/)){val=substr([=11=],RSTART,RLENGTH);sub(/,/,"",val);print val} else{print "NULL"}}')
echo "$VAR"
VALUE1
在既不是 VALUE1
也不是 VALUE2
的情况下在输出中获得 NULL
的示例:
VAR=$(echo "VALUE3,VALUE12,VALUE4,VALUE9" | awk '{if(match([=12=],/VALUE[12],|VALUE[12]$/)){val=substr([=12=],RSTART,RLENGTH);sub(/,/,"",val);print val} else{print "NULL"}}')
echo "$VAR"
NULL