Using case
To check if a shell variable starts with ABC or ABD, a traditional (and very portable) method is to use a case statement:
case "$value" in
AB[CD]*) echo yes;;
*) echo no;;
esac
Because this requires no external processes, it should be fast.
Using [
Alternatively, one can use a test command:
if [ "${value#AB[CD]}" != "$value" ]
then
echo yes
else
echo no
fi
This is also quite portable.
Using [[
Lastly, one can use the more modern and less portable test command:
if [[ $value == AB[CD]* ]]
then
echo yes
else
echo no
fi
Reading the file and testing all in one step
To read the first nonempty line of a file and test if its first field start with ABC or ABD:
awk 'NF{if ($1~/^AB[CD]/) print "yes"; else print "no";exit}' file