Нельзя одновременно использовать и PCRE (-P
), и расширенные регулярные выражения (-E
). В этом случае кажется, что вы вообще не используете выражения PCRE, поэтому можете просто отбросить -P
. Вы также не можете ожидать совпадения пробела после $
.
Объединение большей части выражения в более короткое:
grep -E '^[^.]+\.(com|net)$'
Или,
grep -E -x '[^.]+\.(com|net)'
Параметр -x
приведет к тому, что grep
будет соответствовать только полным строкам.
Выражение соответствует не-нулевому количеству не-точечных символов, за которыми следует точка, а затем net
или com
.