Shell脚本:if语句中的RegEx

dal*_*awh 4 regex shell if-statement

我似乎无法弄清楚如何在if语句中正确编写正则表达式.我希望它打印出所有带有"结束日期"的行.

NUMBERS包含一个包含以下内容的文本文件:

End Date    ABC ABC ABC ABC ABC ABC
05/15/13    2   7   1   1   4   5  
04/16/13    4   3   0   1   3   6  
03/17/13    6   9   3   8   5   9  
02/18/13    8   2   7   1   0   1  
01/19/13    1   9   2   2   5   2  
12/20/12    7   2   7   1   0   1 
Run Code Online (Sandbox Code Playgroud)

以下是我的代码片段,我遇到了以下问题:

if [ -f $NUMBERS ]
then
        while read line
        do
                if [ $line = ^End ]
                then
                        echo "$line"
                else
                        echo "BROKEN!"
                        break                   
                fi
        done < $NUMBERS
else
        echo "===== $NUMBERS failed to read  ====="
fi
Run Code Online (Sandbox Code Playgroud)

输出是:

破碎!

dat*_*guy 8

如果你正在使用bash,请尝试=~:

...
if [[ $line =~ ^End ]]
Run Code Online (Sandbox Code Playgroud)

请注意,以下内容不起作用:1

if [[ "$line" =~ "^End" ]]
Run Code Online (Sandbox Code Playgroud)

  • 请注意,这不适用于所有 shell。 (2认同)