Вы используете правильный синтаксис в своем первом примере; проблема +
только считается особенным при использовании "расширенных" регулярных выражений. Из страницы справочника реализации GNU grep
:
Основной по сравнению с расширенными регулярными выражениями
В основных регулярных выражениях метасимволы?, +, {|, (и) теряют их особое значение; вместо этого используйте backslashed версии \?, \+, \{, \|, \(, и \).
(\?
, \+
, и \|
нестандартные расширения GNU хотя).
Так, любой необходимо выйти +
(принятие GNU grep
или совместимый):
$ grep "^[A-Z][A-Z]\+" filename
Используйте стандарт \{1,\}
эквивалентный из GNU \+
:
$ grep '^[A-Z][A-Z]\{1,\}' filename
или даже здесь:
$ grep '^[A-Z]\{2,\}' filename
Или включите расширенные регулярные выражения путем передачи grep
-E
флаг или просто выполнение egrep
(egrep
команда, которая представила те расширенные регулярные выражения в конце 70-х):
$ grep -E "^[A-Z][A-Z]+" filename
$ egrep "^[A-Z][A-Z]+" filename
В любом случае все это было бы функционально эквивалентно:
$ grep '^[A-Z][A-Z]' filename
Таким образом, Вам даже не нужно +
оператор.
В Вашем другом примере Вы попробовали:
$ grep "^[A-Z][A-Z]*" filename
*
работы в основных регулярных выражениях, но это соответствует 0 или больше раз, не 1 или больше. Решение в Вашем ответе работает, потому что это говорит, "соответствуют капиталу, затем другой капитал, затем 0 или больше прописных букв". В методе в вопросе говорится, "соответствуют капиталу, затем 1 или более прописных букв", который является тем же. Можно также использовать {min,max}
указывать точно, сколько Вы хотите, и если Вы не учитываете max
это позволяет любое число (это также требует расширенных регулярных выражений):
$ egrep "^[A-Z]{2,}"
(как примечание к истории, egrep
не поддерживал {min,max}
первоначально (и все еще не делает в Солярисе 11 /bin/egrep
например). \{min,max\}
поддержка была добавлена к grep
прежде {min,max}
был добавлен к egrep
(который в случае egrep
действительно повреждал обратную совместимость)).
Хеш является разделителем между IP сервера, который ответил на Ваш запрос, и порт, это - сервис, работал.
Вы получили свой ответ от сервера 161.43.32.162
и это - сервис DNS, работал на порте 53
. #
разделяет два значения.