У bash нет оператора «не соответствует регулярному выражению»; вы можете свести на нет (!
) тест на "делает матч регулярное выражение" оператора (=~
):
if [[ ! "$line" =~ ^02/18/13 ]]
или использовать "не соответствует строке/Glob шаблон" оператор (!=
):
if [[ "$line" != 02/18/13* ]]
Шаблоны Glob просто отличаются от регулярных выражений, чтобы сбивать с толку. В этом случае шаблон достаточно прост, что единственное различие состоит в том, что ожидается, что globs будет соответствовать всей строке и, следовательно, не нужно привязывать (на самом деле ему нужен шаблон для отмены привязки конца шаблона).
переменная линия не приравнивает^02/18/13. вы попробовали = ~ вместо! = оператора? или его не то, что вы хотите? – Lynch
@ Lynch Я хочу, чтобы все строки не начинались с этой даты. – dalawh