- Grep эквивалент для Windows 7?
- unix_man
- Сентябрь 2011
- Метки
- Аналог grep, ls, ifconfig, man в windows
- Ack лучше grep
- Базовые возможности
- Регулярные выражение
- Работа с файлами
- Конфигурация
- 🧾 Как скачать, установить и использовать GNU Grep в Windows?
- Скачать GNU Grep
- Установить GNU Grep
- Задать путь Grep для переменных среды
- Вывести справочную информацию Grep
- Поиск текста или слова с grep в Windows
- Добавить комментарий Отменить ответ
- • Свежие записи
- • Категории
- • itsecforu.ru
- • Страны посетителей
- IT is good
- NETWORKS FOR EVERYONE
Grep эквивалент для Windows 7?
Есть ли в командной строке grep эквивалент для Windows 7? То есть я хочу отфильтровать результаты команды:
Использование Bash:
Что бы это было из командной строки Windows?
Findstr звучит как то, что вы хотите. Я использую его все время как приблизительный эквивалент grep на платформе Windows.
Есть несколько возможностей:
- Используйте порт команды Unix grep . Есть несколько вариантов. Чаще всего упоминаются GNUWin32 , cygwin и unxutils . Менее известными, но в некотором смысле лучше, являются инструменты из служебного инструментария SFUA , которые запускаются в Подсистеме для приложений на основе UNIX, которая поставляется в комплекте с Windows 7 Ultimate Edition и Windows Server 2008 R2. (Для Windows XP, можно загрузить и установить службы для UNIX версии 3.5 .) Этот инструментарий имеет большое количество командной строки TUI инструментов, от mv и du через оболочки Korn и C, чтобы perl и awk , Он выпускается в версиях x86-64 и IA64, а также x86-32. Программы работают в собственном POSIX-окружении Windows, а не с DLL-библиотеками эмулятора (такими как cygwin1.dll ), наслоенными поверх Win32. И да, инструментарий есть grep , а также около 300 других.
- Используйте одну из многих собственных grep команд Win32, которые люди написали и опубликовали. Тим Чаррон, например, имеет встроенную версию модифицированной GNU grep для Win32 . Существуют также PowerGREP , Bare Grep , grepWin , AstroGrep и dnGrep , хотя это все программы с графическим интерфейсом, а не программы TUI.
- Используйте прилагаемые find и findstr . grep Обратите внимание, что синтаксис отличается от синтаксиса регулярных выражений.
unix_man
Сентябрь 2011
Вс | Пн | Вт | Ср | Чт | Пт | Сб |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 |
Метки
Аналог grep, ls, ifconfig, man в windows
Взял здесь system-administrators.info/ и заюзал у себя на компе. Оказалось очень удобно.
Привожу как есть:
Многим любителям шела нравится чудная команда grep.
К сожалению, windows нативно не имеет такой команды, по этому некоторые ставят себе наборы различных консольных утилит в *nix стиле, включая grep .
Мне, как любителю посидеть в консоли Windows очень мешало отсутствие грепа, по этому мои скрипты под Win всегда были не так хороши, как могли бы быть. Но мои скрипты должны работать на любой (ну, или почти на любой) Windows, так как же быть?
К счастью, в Windows XP (и выше) появились две команды, которые призваны исправить положение — это find и более мощный вариант — findstr .
первая простая, и имеет явный недостаток — искомый текст надо заключать в кавычки. Не знаю, как вам — но мне очень не удобно печатать кавычки каждый раз 🙂
findstr же этого не требует, и к тому же позволяет искать используя мощь регулярных выражений.
Таким образом, теперь надо помнить, что мы не в bash\zsh\etc, а в Win, и набирать findstr вместо grep.
Ну а на своей машине я сделал следующее:
Для grep :
echo findstr %1 %2 %3 %4 %5 > %systemroot%\grep.cmd
теперь можно не задумываясь грепать вывод:
C:\WINDOWS>netstat -an | grep LISTEN
C:\WINDOWS>findstr LISTEN
TCP 0.0.0.0:135 0.0.0.0:0 LISTENING
TCP 0.0.0.0:445 0.0.0.0:0 LISTENING
TCP 0.0.0.0:1963 0.0.0.0:0 LISTENING
TCP 10.198.17.58:139 0.0.0.0:0 LISTENING
TCP 127.0.0.1:1025 0.0.0.0:0 LISTENING
TCP 127.0.0.1:9050 0.0.0.0:0 LISTENING
TCP 127.0.0.1:9051 0.0.0.0:0 LISTENING
TCP 192.168.56.1:139 0.0.0.0:0 LISTENING
Ну и на закуску:
ifconfig :
echo IF «%1″==»-a» (ipconfig /all) ELSE (ipconfig %1) > %systemroot%\ifconfig.cmd
man :
echo %1 /?> %systemroot%\man.cmd
ls :
echo IF «%1″==»-a» (dir) ELSE (IF «%1″==»-al» (dir) ELSE (dir %1 %2 %3 %4 %5)) > %systemroot%\ls.cmd
Я часто на автомате даю ключ(и) -a(l) команде ls, по этому добавил их «обработку»
Ack лучше grep
Хочу рассказать об одной утилите для поиска, которая очень сильно упрощает жизнь. Когда я попадаю на сервер и мне надо что-то поискать я первым делом проверяю установлен ли ack. Эта утилита является прекрасной заменой grep, а также в какой-то мере find и wc. Почему не grep? Ack имеет более приятные настройки из коробки, более человеко-читаемые опции, perl регулярки и систему конфигов. Если вы любите( приходится ) искать через терминал, то вам однозначно стоит ее попробовать.
Базовые возможности
Ack по умолчанию рекурсивен, а писать меньше опций всегда хорошо.
Мы можем использовать флаг -w, чтобы сказать утилите искать экземпляр нашего шаблона, окруженный границами слов(пробельными символами, слэшом и т.д.).
Ack поддерживает поиск по типу файлов. Например, найдем версию модуля в json файлах.
Полный список поддерживаемых типов файлов можно посмотреть с помощью:
Зачастую надо посчитать сколько раз фраза встречается в лог файле, например, чтобы понять как много данных обработал скрипт.
Считаем сколько раз process встречается в файле test.log, не учитывая регистр (-i).
Мы можем посчитать вхождения не просто в одном конкретном файле, а в группе. Доработаем предыдущий поиск слова mysql: посчитаем кол-во вхождений слов (-с) в *.js файлах(—js), исключив файлы в которых ничего не найдено (-h) и просуммировав итог.
Кроме того, мы можем получить развернутый отчет по кол-ву вхождений в каждый файл с помощью (-l)
Если вам необходим дополнительный контекст для поиcка, можно попросить ack
показать строки до (-B) и после (-A) найденного выражения. Для этого надо указать после опции кол-во строк, которое необходимо показать.
А если нужно и то и другое, то используйте (-С)
Имеется также опция(-v) для инвертирования поиска, т.е показывать строки в которых нет заданного шаблона.
Регулярные выражение
Ack в отличие от grep использует Perl совместимые выражения.
Для меня это большой плюс, не приходится запоминать отдельный синтаксис для регулярок.
Более сложный пример
Зачастую хочется в результатах оставить только то, что совпадает с шаблоном. Здесь поможет опция —output (-o)
Ко всему прочему, с помощью круглых скобок мы можем выделить найденную часть и обратиться к ней в output через переменную $[номер группы]. Например,
Ack имеет полезные опции —range-start и —range-end. Они помогают, когда
данные хранятся не одной строкой, а в многострочном виде.
Например, есть файл с sql кодом
Извлечем названия колонок. Началом блока будет строка начинающаяся на SELECT, а концом строка начинающаяся на FROM.
Если в поисковом выражении участвуют специальные символы такие как точка, круглая скобка и другие, то для того чтобы их не экранировать с помощью \, можно использовать опцию -Q.
Работа с файлами
Получить список файлов с определенным расширением
Найти все js файлы имя которых начинается с P*, используя опцию(-g).
Конфигурация
Утилита имеет свой конфиг файл. Можно иметь как глобальный конфиг для пользователя(
/.ackrc), так и локальный для конкретной папки (в папке необходимо создать файл .ackrc).
Большинство опций, которые прописываются в конфиги можно и руками прописывать при вызове. Разберем несколько из них.
Игнорировать папку при поиске
Добавим кастомный тип файла —vue.
Теперь можно использовать опцию —vue, для поиска в файлах .vue. Например: ack —vue App.
При этом можно указать список расширений для этой опции. Например, тут при использовании —vue будут обработаны и .js файлы.
🧾 Как скачать, установить и использовать GNU Grep в Windows?
grep – очень мощный и полезный инструмент, используемый в операционных системах Linux и Unix.
Он в основном используется для сопоставления и вывода указанного текста в заданных текстовых файлах в разных форматах.
У grep также есть подверсии вроде egrep, которые предоставляют расширенные функциональные возможности, такие как регулярные выражения.
В этом руководстве мы узнаем, как загрузить, установить и использовать grep и egrep для операционных систем Windows.
Скачать GNU Grep
grep – это инструментальные средства Unix или Linux, предоставляемые как opensource.
Он также предоставляется GNU для операционных систем и платформ Windows.
Мы можем скачать установочный файл grep со следующей страницы.
Или просто мы можем скачать по следующей ссылке напрямую.
Но имейте в виду, что когда появятся новые версии, следующая ссылка будет устаревшей.
Установить GNU Grep
Мы начнем установку, щелкнув на файл gre-2.5.4-setup.exe.
Мы видим, что текущая версия программы установки, которую мы будем устанавливать, – 2.5.4.
Это может потребовать некоторых административных привилегий.
Таким образом, мы предоставим права администратора, нажав Да в диалоговом окне.
Под стартовым экраном установки GNU Grep
Далее следуйте подсказкам установщика в графическом режиме.
Задать путь Grep для переменных среды
В соответствии с заданной конфигурацией grep устанавливается в C:\Program Files\GnuWin32\ в каталоге bin.
Чтобы вызвать и использовать команду grep из MS-DOS или командной строки, нам нужно добавить этот путь к переменным среды PATHvariable.
Мы также можем увидеть исполняемые файлы с именами egrep, fgrep и grep на следующем экране.
Мы можем установить путь разными способами, но наиболее практичным является использование слишком setx командной строки, как показано ниже.
Затем мы можем проверить, открыв новую командную строку или окно MS-DOS и запустив команду grep, как показано ниже.
Мы можем увидеть, что команда grep установлена и ожидает некоторый параметр и файл для работы.
Вывести справочную информацию Grep
Команда grep в Windows очень похожа на версию для Linux. Но нам может понадобиться некоторая полезная информация об использовании и опциях. Мы можем напечатать справочную информацию с опцией –help, как показано ниже.
Поиск текста или слова с grep в Windows
Мы можем выполнить поиск определенного слова или текста, просто предоставив термин grep и файл, который мы хотим отобразить.
В этом примере термин grep – это ssh, а файл, который мы хотим посмотреть, называется config.txt.
Содержимое config.txt, как показано ниже, представляет собой файл ssh_config из коробки Ubuntu.
Мы запустим следующую команду:
Добавить комментарий Отменить ответ
• Свежие записи
• Категории
• itsecforu.ru
• Страны посетителей
IT is good
NETWORKS FOR EVERYONE
Grep – это утилита, которая выводит строки по заданному регулярному выражению. Для сетевого администратора она очень полезна для парсинга больших лог-файлов, например с Cisco ASA. Grep по текстовому файлу с логами размером 2GB занимает обычно несколько секунд.
В любой nix-подобной операционной системе grep уже предустановлен, но если в качестве рабочей станции сетевого администратора используется ОС Windows, то подобного инструмента как такового нет. В Windows есть утилиты командной строки find и findstr, но они работают помедленней чем grep и не такие гибкие. Поэтому я советую установить и использовать grep в Windows.
Нужно скачать Setup с сайта http://gnuwin32.sourceforge.net/packages/grep.htm и установить его.
После установки для удобства вызова grep из командной строки, чтобы не писать каждый раз полный путь к утилите, нужно добавить запись в PATH. PATH представляет собой переменную, которая содержит набор директорий с исполняемыми файлами. Для добавления записи в PATH нужно открыть окно “Система” (WIN+PAUSE), выбрать “Дополнительные параметры системы”, далее выбрать “Переменные среды…”.
В открывшемся окне двойным щелчком нажимаем на “PATH” и добавляем через знак “;” (точка с запятой) путь “C:\Program Files (x86)\GnuWin32\bin” и нажимаем “ОК”.
Далее открываем cmd и проверяем настройку командой “path” – в конце вывода команды должен добавиться путь до папки с утилитой grep.
Все, теперь можно пользоваться.
Приведу пример, как использую этот инструмент я. Например перед нами стоит задача достать из файла с логами все, что связано с определенным IP-адресом.
Я решаю такие задачи следующим образом:
Создаю папку в корне диска C:\tmp\
Далее перехожу в эту папку командой cd c:\tmp\
Далее выполняю следующую команду:
grep x.x.x.x C:\tmp\log.txt > grep-log.txt
Где x.x.x.x – ip адрес, который мы ищем, “C:\tmp\log.txt” – файл с логами, знак “>” – оператор перенаправления вывода команды в файл, “grep-log.txt” файл с выводом команды grep.
Так же grep удобно использовать для фильтрации вывода команды “netstat”. Сделать это можно через знак pipeline – “|”. Чтобы посмотреть все порты, которые находятся на хосте в статусе “LISTEN” можно использовать следующую команду:
netstat -an | grep LISTEN
Подробную справку по использованию grep можно получить командой