grep игнорирует конвейер при псевдониме 'grep -R'

Да, это возможно. У VirtualBox есть хорошая документация по этому поводу, которую можно найти по по этой ссылке (Раздел 9.9, Расширенная конфигурация хранилища).

Это только для опытных пользователей, поэтому перед тем, как пытаться это сделать, убедитесь, что вы внимательно ознакомились с документацией VirtualBox, поскольку это может привести к потере данных / сбою ОС хоста, если не будет выполнено правильно.

3
12.11.2019, 23:55
2 ответа

Псевдоним является причиной этого. Из man grepопция -Rзаставляет grep«рекурсивно читать все файлы в каждом каталоге». Следовательно, часть после канала игнорирует вывод из первого grepи вместо этого grepрекурсивно перебирает все файлы из текущего каталога.

Вы можете обойти псевдоним и использовать ванильный grep с \grep. Следовательно, следующее должно дать вам то, что вы ожидаете.

grep lcov * | \grep -v call

Тем не менее, лично я считаю, что добавление -Rв псевдоним сбивает с толку.

7
27.01.2020, 21:13

Интересно. Это кажется правильным, похоже, что дьявол кроется в деталях.

grep "search_query" *

может быть отличным от

grep search_query *

, который может быть отличным от

grep 'search_query' *

Попробуйте это:

grep search_query * > /tmp/foo
grep -v but_not_this /tmp/foo

Содержит ли файл /tmp/fooто, что вам нужно?
Дает ли grep -v but_not_thisнужный вам ответ?
замените grepна \grep, чтобы удалить его и посмотреть, работает ли это.

-1
27.01.2020, 21:13

Теги

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