У меня есть файл, значение которого начинается с ABC или ABD.
После извлечения значения из входного файла как проверить, начинается ли оно с ABC или ABD?
Например:
value=$(cat file | awk 'NF{print;exit}' | awk '{print $1}')
и теперь я хочу проверить, что это значение $ начинается с ABC или ABD. как?
case
Чтобы проверить, начинается ли переменная оболочки с ABC или ABD, традиционный (и очень переносимый) метод заключается в использовании оператора case:
case "$value" in
AB[CD]*) echo yes;;
*) echo no;;
esac
Потому что это не требует никаких внешних процессов, оно должно быть быстрым.
[
В качестве альтернативы можно использовать команду test :
if [ "${value#AB[CD]}" != "$value" ]
then
echo yes
else
echo no
fi
Это также довольно переносимо.
[[
Наконец, можно использовать более современную и менее портативную команду test :
if [[ $value == AB[CD]* ]]
then
echo yes
else
echo no
fi
Чтобы прочитать первую непустую строку файла и проверить, начинается ли его первое поле с ABC или ABD:
awk 'NF{if ($1~/^AB[CD]/) print "yes"; else print "no";exit}' file
Попробуйте это:
echo $value | grep -c "^AB[CD]"
Это вернет 1, если шаблон присутствует в начале.