Как вы будете использовать буквенно-цифровые строки от 1 до 50 символов (в идеале, любая длина будет работать тоже) с двоеточием с каждой стороны - типичным результатом будут все строки, содержащие строку :shopping:
. Пока у меня есть код ниже (я пробовал несколько вариантов), который не работает:
grep ':[[:alnum:]]{1,100}:' ~/x.txt
grep
путем включения-E
коммутатора.Ответы:
Вы должны включить расширенные регулярные выражения для этого:
источник
С помощью основных регулярных выражений вы можете написать это так:
Обратите внимание, что
\{
(в отличие от\+
или\?
например) является стандартным и переносимым, и на самом деле эквиваленты BRE+
и?
обычно пишутся с помощью\{
:\{1,\}
и\{0,1\}
.grep -E
Он также является стандартным и переносимым, так что вы можете использовать его так, как это делает для более удобочитаемых регулярных выражений в этих случаях.источник
Вы используете расширенное регулярное выражение, поэтому вам нужно использовать опцию -E:
источник
Поскольку никто другой не упомянул об этом, вы также можете использовать
egrep
, что, как я понимаю, эквивалентноgrep -E
.источник
egrep
была историческая команда, чтобы пообщаться с EREs. С тех пор функции grep и egrep (давно) были объединены в grep с опцией -E.egrep
в настоящее время считается устаревшим / устаревшим (но вряд ли пойдет, так как некоторые люди все еще привыкли к нему).