I would like to get sub-string VALUE1 or VALUE2 from the the string "VALUE3,VALUE2,VALUE4,VALUE9"
and if there is none of these then my $VAR should be empty.
My String cannot have both sub-strings at the same time so we have only 3 possibilities.
VAR=VALUE1
VAR=VALUE2
VAR=NULL
I would like to do it in one line something like:
STRING="VALUE3,VALUE2,VALUE4,VALUE9,VALUE7"
VAR=`echo $STRING | grep -P "(VALUE1|VALUE2)"`
echo $VAR
VALUE2
This will print NULL in case VALUE1
or VALUE2
none of them are found.
echo "VALUE3,VALUE1,VALUE4,VALUE9" | awk '
{
if(match($0,/VALUE[12],|VALUE[12]$/)){
val=substr($0,RSTART,RLENGTH)
sub(/,/,"",val)
print val
}
else{
print "NULL"
}
}'
OR to take it into a variable use like:
VAR=$(echo "VALUE3,VALUE1,VALUE4,VALUE9" | awk '{if(match($0,/VALUE[12],|VALUE[12]$/)){val=substr($0,RSTART,RLENGTH);sub(/,/,"",val);print val} else{print "NULL"}}')
echo "$VAR"
VALUE1
Example of getting NULL
in output in case neither VALUE1
nor VALUE2
:
VAR=$(echo "VALUE3,VALUE12,VALUE4,VALUE9" | awk '{if(match($0,/VALUE[12],|VALUE[12]$/)){val=substr($0,RSTART,RLENGTH);sub(/,/,"",val);print val} else{print "NULL"}}')
echo "$VAR"
NULL