вторник, 25 сентября 2012 г.

grep в Windows? Легко!


Многим юниксоидам очень не хватает команды grep при работе в cmd Windows.
Команды с таким названием в Windows нет :(

К счастью, в Windows XP (и выше) появились две команды, которые призваны исправить положение — это find и более мощный вариант — findstr.

Первая простая, и имеет явный недостаток — искомый текст надо заключать в кавычки.
Не знаю, как вам — но мне очень не удобно печатать кавычки каждый раз :)
findstr же этого не требует, и к тому же позволяет искать используя мощь регулярных выражений.
Таким образом, теперь надо помнить, что мы не в bash\zsh\etc, а в Win, и набирать findstr вместо 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, по этому добавил их «обработку»

P.S. спасибо AddRemover.

Ссылки:
grep в Windows? Легко!

2 комментария:

  1. под виндой есть find "pattern"

    ОтветитьУдалить
  2. Да, я об этом писал, что есть find , есть findstr.
    Просто после консоли Linux привычнее набирать
    Command|grep "pattern"

    ОтветитьУдалить