В Solaris 10 я не могу правильно использовать grep. Мне просто нужно регулярное выражение, которое может соответствовать предложению, содержащему «яблоко» или «банан», и я пробовал в течение часа, но я не могу заставить его работать.(Solaris10 grep) Regex соответствует различным словам
#!/bin/sh
# this is NOT bash
# grep usage: grep -hblcnsviw pattern file . . .
RESET='\033[0m'
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
write() {
message=$1
if [ `echo $message | grep -c '^Success'` -gt 0 ]
then
echo "${GREEN}$message${RESET}"
elif [ `echo $message | grep -c '(apple|banana)'` -gt 0 ] # doesn't work
then
echo "${YELLOW}$message${RESET}"
elif [ `echo $message | grep -c '^.*(apple|banana).*$'` -gt 0 ] # neither
then
echo "${YELLOW}$message${RESET}"
elif [ `echo $message | grep -c '/^.*(apple|banana).*$/'` -gt 0 ] # neither
then
echo "${YELLOW}$message${RESET}"
elif [ `echo $message | grep -c '^Error'` -gt 0 ]
then
echo "${RED}$message${RESET}"
fi
}
write 'Success'
write 'Error'
write 'banana'
P.S. : Она работает очень хорошо, если мне нужно регулярное выражение для чего-нибудь еще, просто не яблоко или банан
Предполагая, что ваша версия 'grep' поддерживает его, вы, вероятно, хотите« if echo »$ message» | grep -q '^ Success'; then' и т. д. вместо захвата вывода 'grep'. – chepner