BASH正则表达式匹配星期几

时间:2016-11-14 20:34:29

标签: regex bash

我正在尝试找到一种更好的方法来匹配我的bash脚本中的星期几。这就是我的工作:

if [[ $LINE == *"Sun"* ]] || [[ $LINE == *"Mon"* ]] || [[ $LINE == *"Tue"* ]] || [[ $LINE == *"Wed"* ]] || [[ $LINE == *"Thu"* ]] || [[ $LINE == *"Fri"* ]] || [[ $LINE == *"Sat"* ]]; then

我正在解析的文件中的所有行都是从Mon到Sun开始的:

Mon  cat  dog  bird
Tue  bird cat  dog

但我知道必须有更好的方法。我尝试了很多东西,这里有几个失败:

DAYS_REGEX='*[S|M|T|W|F][u|o|e|h|r|a][n|e|d|u|i|t]*'
if [[ $LINE =~ $DAYS_REGEX ]] ; then

if [[ $LINE == *"Sun|Mon|Tue|Wed|Thu|Fri|Sat"* ]] ; then

我觉得应该有一个像这样的正则表达式,但我不能把它固定下来:

(SMTWF / uoehra / neduit)

我有什么工作,但我正在努力学习如何将正则表达式合并到我的bash脚本中。任何帮助/建议将不胜感激。 TIA

2 个答案:

答案 0 :(得分:3)

匹配正则表达式:

if [[ $LINE =~ Sun|Mon|Tue|Wed|Thu|Fri|Sat ]]; then
  echo match
fi

答案 1 :(得分:1)

我会使用案例陈述:

case "$LINE" in
    Mon*|Tue*|Wed*|Thu*|Fri*|Sat*|Sun*)
        echo "Some logic here..."
        ;;
esac

如果您需要:

,那么您可以将其拆分为单独的逻辑单独的日子
case "$LINE" in
    Mon*|Tue*|Wed*)
        echo "Different logic"
        ;;
    Thu*|Fri*|Sat*|Sun*)
        echo "Some logic here..."
        ;;
esac