如何使用Windows bat文件为grep结果着色?

时间:2014-03-24 21:56:10

标签: batch-file grep

我使用grep的Windows端口创建了一个bat文件,允许我使用上下文搜索来搜索字符串。它看起来像这样:

grep -C -i "%1" %2 

如果我像这样调用它:grep -C -i" Smith" Mydoc.doc的 我得到了我想要的确切结果:

Bruce Korn
10 Smith Street 
Durham, NC 

但有没有人知道将一种Windows Color命令添加到蝙蝠的方法,以便#34; Smith" 将以绿色显示(类似于"颜色0F和#34;)作为管道或类似的东西添加?我只是想不出怎么做(或者甚至可能)

(grep端口没有着色或突出显示功能)

1 个答案:

答案 0 :(得分:0)

我不久前发现了这个批处理文件。不幸的是,我无法找到来源,或记得是谁写的。希望有人会看到这个,并能够提供一个链接。

@echo off
SETLOCAL EnableDelayedExpansion
for /F "tokens=1,2 delims=#" %%a in ('"prompt #$H#$E# & echo on & for %%b in (1) do rem"') do (
  set "DEL=%%a"
)
echo next line in another color:
call :ColorText 0c "There is an Ashstorm!"
echo this was red.
call :ColorText 0a "you survived it."

goto :eof

:ColorText
echo off
echo %DEL% > "%~2"
findstr /v /a:%1 /R "^$" "%~2" nul
del "%~2" > nul 2>&1
goto :eof

你应该能够使用for循环来调整它,只改变第一行的颜色。

替换此部分;

echo next line in another color:
call :ColorText 0c "There is an Ashstorm!"
echo this was red.
call :ColorText 0a "you survived it."

以下内容:

set c=1
for /f "delims=" %%a in ('grep -C -i "%1" %2') do (
    if !c!==1 (call :ColorText 02 "%%a") else echo %%a
    set /a c+=1
)