2014-12-09 3 views
0

Я пытаюсь найти буквенно-цифровую строку, включая эти два символа «/ +» длиной не менее 30 символов.Некоторая помощь необходима для grep

Я написал этот код,

grep "[a-zA-Z0-9\/\+]{30,}" tmp.txt 

кошка tmp.txt

> array('rWmyiJgKT8sFXCmMr639U4nWxcSvVFEur9hNOOvQwF/tpYRqTk9yWV2xPFBAZwAPRVs/s 
ddd73ZEjfy+airfy8DtqIqKI9+dd 6hdd7soJ9iG0sGs/ld5f2GHzockoYHfh 
+pAzx/t17Crf0T/2+8+reo+MU39lqCr02sAkcC1k/LzyBvSDEtu9N/9NHicr jA3SvDqg5s44DFlaNZ/8BW37fGEf2rk13S/q68OVVyzac7IT7yE7PIL9XZ/6LsmrY 
KEsAmN4i/+ym8be3wwn KWGYaIB908+7W98pI6qao3iaZB 
3mh7Y/nZm52hyLa37978f+PyOCqUh0Wfx2PL3vglofi0l 
QVrOM1pg+mFLEIC88B706UzL4Pss7ouEo+EsrES+/qJq9Y1e/UGvwefOWSL2TJdt 

это не работает, в основном я хотел бы иметь минимальную длину строки, чтобы быть 30

+0

Каков ваш ожидаемый результат? Вы хотите соответствовать всей строке? –

ответ

1

В синтаксисе grep скобки повторения должны быть обратными.

grep -o '[a-zA-Z0-9/+]\{30,\}' file 

Если вы хотите ограничить матч строк, содержащих только соответствует этому шаблону, добавьте линии старт и конца строки якоря:

grep '^[a-zA-Z0-9/+]\{30,\}$' file 

-o вариант в первой командной строке вызывает grep только распечатать соответствующую часть, а не всю соответствующую строку.

+0

Благодарим за отзыв. Я предполагаю, что^- для начала строки, а $ - для конца строки. Он (шаблон поиска) не должен начинаться с начала строки и не должен заканчиваться на $ (i.e конец строки). Будет ли он работать, если этот шаблон соблюден и продолжен другими строками? – Mani

+0

no, если вы хотите только совпадающее слово, тогда вы можете использовать 'grep -o '[a-zA-Z0-9/+] \ {30, \}' file' –

+0

. Задние подтяжки - вот что решило проблему OP. Закрепление поиска не было задано в вопросе и будет разбиваться на строки, которые также содержат другие вещи. См. Комментарий OP выше. Удаление якорей должно быть достаточным, если требуется печать всей строки. – tripleee

0

Вы можете использовать

grep -e "^[a-zA-Z0-9/+]\{30,\}" tmp.txt 

grep -e "^[a-zA-Z0-9/+]\{30,\}" tmp.txt 


+pAzx/t17Crf0T/2+8+reo+MU39lqCr02sAkcC1k/LzyBvSDEtu9N/9NHicr jA3SvDqg5s44DFlaNZ/8BW37fGEf2rk13S/q68OVVyzac7IT7yE7PIL9XZ/6LsmrY 
3mh7Y/nZm52hyLa37978f+PyOCqUh0Wfx2PL3vglofi0l 
QVrOM1pg+mFLEIC88B706UzL4Pss7ouEo+EsrES+/qJq9Y1e/UGvwefOWSL2TJdt 
1

Оператор повторения не поддерживается непосредственно в Основном синтаксис регулярных выражений. Используйте grep -E, чтобы включить синтаксис Extended Regular Expression или обратную косую черту.

0
man grep 

Ознакомьтесь с разницей между регулярными и расширенными шаблонами. Вам нужна опция -E.

Смежные вопросы