Странное поведение «ls -a | grep ^ \. "

Я хотел перечислить содержимое pwd и отобразить только файл, начинающийся с точки. Я попробовал ls -a | grep ^\. ls -a | grep ^\. но я не могу понять, почему вывод содержит также файлы, которые не начинаются с точки. Например:

 Pictures .pip .pki .profile projects Public 

Я знаю, что я могу добиться того, что хочу с помощью ls -ld .* Мне просто интересно об этом поведении grep, которое я не могу объяснить.

3 Solutions collect form web for “Странное поведение «ls -a | grep ^ \. "”

Ответить аргумент grep , таким образом ls -a | grep '^\.' ls -a | grep '^\.'

Причина этого в том, что оболочка обрабатывает \. и превращает его обратно в равнину . , который grep обрабатывает как односимвольный шаблон. Если есть сомнения, всегда указывайте строку, содержащую (или может содержать) символ, который является особым для оболочки.

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

 ls -a | grep '^\.' 

Примечание. Не разбирайте вывод команды ls .

Если вы выполните cmd ls -a | grep ^ \. то grep не учитывает «\» как особый символ и значение «.». не убегайте.

Когда мы используем cmd ls -a | grep "^ \". то grep считает «\» особым символом и значением «.». убегает. Это даст вам результат, как ожидалось.

Если вы хотите использовать grep cmd без кавычек, вам также следует избегать символа «\». Вы можете ожидать ожидаемого результата без двойных кавычек, следуя команде. ls -a | grep ^ \\.

Подробнее о значении специальных символов в Regex см. Следующую ссылку. http://www.regular-expressions.info/quickstart.html

  • Поиск шаблона регулярного выражения для чередующегося символьного случая
  • Найдите строки, начинающиеся с #define и заканчивающиеся на \
  • что означает «^ $ 1» в сценарии оболочки?
  • Можем ли мы сделать grep быстрее, индексируя слова в файлах?
  • переформатируйте текстовый файл, чтобы иметь весь текст в одной строке, используя CentOS 5.6
  • Поиск идентификатора процесса и его уничтожение
  • Поиск текста в файлах, имеющих определенную папку в пути, а затем отображение соответствующих строк и разрешений файлов
  • Что заставляет logcheck загружать 100% загрузки процессора?
  • Как использовать grep для фильтрации строк, начинающихся с любого из нескольких ключевых слов?
  • Использование grep в скрипте оболочки
  • Ускорение работы zgrep на многоядерном компьютере
  • Как сделать этот поиск быстрее в fgrep / Ag?
  • Linux и Unix - лучшая ОС в мире.