Intereting Posts
Как я могу предотвратить использование аргументов аргументов `xargs` в префиксах пробелами? Как сделать anaconda пропустить установку пакета? Мне нужна помощь с командой «at» Найдено Duplicate PV в сканировании диска LVM Как узнать, запущен ли httpd или нет через командную строку? Я хочу, чтобы эхо значение в a1, a2, a3. Но мой код печатает только a1, a2 и a3, а не значение, хранящееся внутри них Символическая ссылка и вопросы с жесткой ссылкой Как получить доступ ко всем 8 последовательным портам на моей 8-портовой последовательной PCI-карте Невозможно настроить учетную запись ssh без ввода пароля Настройка snd-dummy на виртуальной машине Ubuntu Как можно отключить гладкую прокрутку клавиатуры в gedit (GNOME 3.14 / Fedora 21)? почему требуется много времени, чтобы запрос bash на высокую загрузку системы Включение службы с помощью systemctl на смонтированной ОС / устройстве Сделать сетевое устройство linux маршрутизатором Arch, Ubuntu: Так в чем дело с libudev.so.0?

Фильтрация цветного выхода grep

Я на OSX, но я подозреваю, что это не имеет большого значения для этого вопроса. В моем .bash_profile я aliased grep для получения цветовых выходов по умолчанию:

 alias grep='grep --color=always' 

Я обычно запускаю поиск содержимого в файлах в своих репозиториях способами, аналогичными:

 grep --include=*.cpp -Ern . -e "(foo|bar)" 

но я часто хочу уточнить результаты, как правило, с помощью grep -v "colorbar" .

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

Очевидно, я мог бы запустить первый поиск без цветов, и тогда все будет работать нормально, но я бы предпочел сохранить их, если есть способ обойти это?

Простой и очевидный ответ:

  1. Измените свой псевдоним, чтобы иметь --color=auto а не always
  2. Соедините ваши команды grep с содержимым вашего сердца
  3. Используйте дополнительную команду grep в конце конвейера, чтобы покрасить результаты, которые вы хотите покрасить, например:

     grep --include=*.cpp -Ern . -e "(foo|bar)" | grep -v colorbar | grep -E -e "(foo|bar)" 

Однако это не красит ваши имена файлов и номера файлов.

Другое возможное решение намного сложнее, но стоит упомянуть: вы можете использовать pcregrep и одно многое регулярное выражение для обработки всей вашей фильтрации в одном регулярном выражении.

удалите файл /etc/profile.d/colorgrep*. В новой версии os linux они вынуждают псевдоним для greg / egrep и fgreg удалять эти файлы, и он возвращается к нормальному состоянию.