переменная длина grep дополнительный текст

Короче говоря grep делает одну вещь только как многие другие инструменты UNIX, и это соответствует строке к данному шаблону, и это делает это хорошо. С другой стороны, awk более сложный инструмент, как это - полный язык программирования, определенный стандартом POSIX с типичными функциями как переменные, массивы, выражения, функции, или проверьте утверждения для сканирования шаблона и обработки.

По-моему, это зависит от реализации, как оба инструмента работают в случае сопоставления с образцом, и на размере некоторого входа Вы хотите обработать. Я ожидал бы, что grep обычно более эффективен, чем awk, поскольку он делает соответствие только. Но Вы не можете написать с grep простой код для выполнения более сложных задач как последующая обработка подобранных записей, вычисление или печатающие результаты, не используя другие инструменты.

4
31.07.2014, 03:04
1 ответ
grep '[[:lower:]]*xyz'

Вернет вам все строки, на которых совпадает этот шаблон. Но, конечно, это не соответствует явным последовательностям символов.

Тем не менее, похоже, что это проблема, которую вы уже решили:

grep -f - <<\STRINGS /dev/fd/3 3<<\DATA
^ZHDEOIMOSJDJKEJLCN
^HDEOIMOSJDJKEJLCN
^DEOIMOSJDJKEJLCN
^EOIMOSJDJKEJLCN
^OIMOSJDJKEJLCN
^IMOSJDJKEJLCN
^MOSJDJKEJLCN
^OSJDJKEJLCN
^SJDJKEJLCN
^JDJKEJLCN
^DJKEJLCN
^JKEJLCN
^KEJLCN
STRINGS

SJDJKEJLCN                                                                  
JDJKEJLCN
o;aidsfjoasjif
KKEJnotLCN
DATA

OUTPUT

SJDJKEJLCN                                                                 
JDJKEJLCN 

Если вы хотите программно сгенерировать ту же таблицу поиска ...

grep -f - <<STRINGS /dev/fd/3 3<<\DATA
$(
    MATCH=ZHDEOIMOSJDJKEJLCN
    until [ ${#MATCH} -lt ${MINLEN=6} ]
    do  printf '^%s\n' "$MATCH"
        MATCH=${MATCH#?}
    done
)
STRINGS

SJDJKEJLCN                                                                  
JDJKEJLCN                                                                  
o;aidsfjoasjif                                                             
KKEJnotLCN                                                                 
DATA

OUTPUT

SJDJKEJLCN                                                                  
JDJKEJLCN
2
27.01.2020, 21:00

Теги

Похожие вопросы