以下检查是否以“结束”开头:
if [[ "$line" =~ ^End ]]
我试图找出如何匹配不以“02/18/13”开头的内容。我尝试过以下方法:
if [[ "$line" != ^02/18/13 ]]
if [[ "$line" != ^02\/18\/13 ]]
它们似乎都不起作用。
答案 0 :(得分:15)
bash没有“不匹配正则表达式”运算符;你可以否定(!
)对“匹配正则表达式”运算符(=~
)的测试:
if [[ ! "$line" =~ ^02/18/13 ]]
或使用“不匹配的字符串/ glob模式”运算符(!=
):
if [[ "$line" != 02/18/13* ]]
Glob模式与正则表达式完全不同,令人困惑。在这种情况下,模式很简单,唯一的区别是整数字符串预期与整个字符串匹配,因此不需要锚定(事实上,它需要一个通配符来解除模式结束)。
答案 1 :(得分:4)
为什么不只是“如果不是”呢?
if ! [[ "$line" =~ ^02/18/13 ]]
答案 2 :(得分:1)
使用if!会做的。例: Say line =“1234” 在bash中使用此测试 -
if ! echo "$line" |grep -q "^:" > /dev/null; then echo "GOOD line does NOT begin with : "; else echo "BAD - line DOES begin with : "; fi
它将回复“GOOD line not not with:”