LINUX.ORG.RU

RegExp


0

0

Строка ls -l | grep "\." выведет все файлы с точкой в имени. Как написать выражение чтоб вывести все файлы БЕЗ точки? Строка ls -l | grep "[^\.]" выводит все файлы.


Ответ на: комментарий от wfrr

т.е. это выражение правильное [^\.] только не для grep?

DRomka
() автор топика
Ответ на: комментарий от anonymous

подправь если не правильно: это выведет всё, что начинается не на точку? Просто хочу разобраться.

DRomka
() автор топика
Ответ на: комментарий от DRomka

>grep "[^\.]" выводит все файлы.

в данном случае grep находит в имени файла символ, отличный от точки и пропускает

>grep "^[^\.]+$"

означает, что имя файла полностью должно состоять из символов отличных от точки.

p.s. я не анонимус

veprbl
()
Ответ на: комментарий от veprbl

Спасибо. Малость разобрался.

я понял что не анонимус :)

DRomka
() автор топика
Ответ на: комментарий от veprbl

При указании символьных классов, в [] экранирования требуют символы: [, ], \, ^, -

Обычные метасимволы $, . и т.д. можно экранировать и в символьных классах, но этого не рекомендуется делать ради читабельности кода.

Поэтому рекомендую регэксп для сабжа ^[^.]+$ - без бекслеша.

anonymous
()
Ответ на: комментарий от DRomka

> точка в символьном классе воспринимается не как любой символ, а именно как точка

Да.

Вообще про регэкспы всю жизнь пишет Джефри Фридл. Его Mastering Regular Expressions весьма рекомендую если хотите глубоко разобраться в теме.

anonymous
()
Ответ на: комментарий от anonymous

> пых, ты действительно даун?!

Если он даун, то он твоего вопроса не поймёт;)

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.