【发布时间】:2013-05-10 16:46:30
【问题描述】:
我似乎无法弄清楚如何在 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
这是我遇到问题的代码的 sn-p:
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
输出是:
坏了!
【问题讨论】:
-
这么简单的事情你不需要正则表达式:
[[ $line == End* ]] -
您的文件是否真的在每一行的开头包含
>字符? -
@glennjackman 我正在为那些有日期的人做正则表达式,但它不起作用,所以我在第一行做了它以确保没有出错。实际文件不包含“>”。
标签: regex shell if-statement