Функция для упрощения grep с часто используемым журналом

Прежде всего, извините, если это мучительно-новичок!

Я пытаюсь сделать функцию, которая упрощает grepping log, с которым я должен работать на регулярной основе.

Я хотел бы использовать расширенное regexp с ним и перенаправить вывод и т. Д.

Но у меня возникли проблемы с этим, используя стандартный синтаксис файла шаблона grep в этой функции.

То, как я его настроил сейчас, ужасно смотреть, но выполняет свою работу:

alias mygrep='cat /path/to/logs/my.log | grep' 

Это позволяет мне бежать без проблем

 mygrep -i -E "WARN|java" |less 

Похоже, правильная реализация должна выглядеть примерно так:

 function mygrep () { args=$* grep "$args" /path/to/logs/my.log } 

Однако, когда я использую это с параметрами поиска и трубы выше, grep возвращает недопустимую ошибку параметра .

Что мне не хватает?

Заранее благодарю за ваше терпение!

  • «Жесткие» трубы в Linux
  • Печать / тройник для консоли, не передавая выход в трубу
  • Могу ли я подключать любые два процесса друг к другу?
  • Поиск файлов и отправка в файл temp
  • Как читать ввод пользователя при использовании сценария в трубе
  • source / dev / stdin не работает должным образом
  • Неблокирующий буферный именованный канал?
  • Конкатенация содержимого файла И имен
  • One Solution collect form web for “Функция для упрощения grep с часто используемым журналом”

    Следующий код содержит $args :

     grep "$args" /path/to/logs/my.log 

    Это просит передать все значение этой переменной в качестве единственного параметра в grep. Таким образом, если вы вызываете mygrep с параметрами -i и -E , grep фактически получит единственный параметр -i -E , который действительно недействителен.

    Это должно сделать следующее:

     function mygrep () { grep "$@" /path/to/logs/my.log } 

    Запись "$@" делает правильную вещь: она похожа на $* , за исключением того, что она правильно расширяет каждый параметр до одного слова.

    Linux и Unix - лучшая ОС в мире.