[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] grep 2.22 单文件回车换行版,支持PCRE

本帖最后由 CrLf 于 2016-1-3 19:25 编辑

单文件无 .dll 依赖
支持 PCRE 正则(-P 开关)
支持 win 下的回车换行

已更新到 Batch-CN
下载地址:http://www.bathome.net/s/tool/?d ... Fgrep&keymode=3
该版本和其他版本见列表:http://www.bathome.net/s/tool/?key=grep&keymode=3

20151223 通过重定义 fwrite 的方式实现支持 \r\n 格式的换行,效率可能比原版略有降低,也未考虑超大 size 的情况
20160103 重定义 fputs/puts/fputc,使其支持 \r\n 格式的换行
实现代码:
  1. size_t _fwrite_CrLf(const void* buffer, size_t size, size_t count, FILE* stream)
  2. {
  3. size_t ret=0;
  4. size_t sc,pc;
  5. char *p,*pbuffer,*q=buffer,lastC='\0';
  6. pc=sc=size*count;
  7. p=pbuffer=malloc(sc*2);
  8. for(;sc-->0;p++,q++){
  9. if(*q=='\n'&&lastC!='\r'){
  10. *p='\r';
  11. p++,pc++;
  12. }
  13. lastC=*p=*q;
  14. }
  15. *p='\0';
  16. ret=fwrite(pbuffer, 1, pc, stream);
  17. free(pbuffer);
  18. return ret;
  19. }
  20. int _fputs_CrLf(const void* buffer, FILE* stream)
  21. {
  22. size_t count, ret;
  23. count = strlen(buffer);
  24. ret = _fwrite_CrLf(buffer, 1, count, stream);
  25. if(ret != count) return ret;
  26. fputc('\r', stream);
  27. fputc('\n', stream);
  28. return ret+2;
  29. }
  30. int _fputc_CrLf(const char chr, FILE* stream)
  31. {
  32. if(chr=='\n')
  33. return fwrite("\r\n", 1, 2, stream) == 2 ? chr : -1;
  34. else
  35. return fputc(chr, stream);
  36. }
  37. #undef fwrite
  38. #define fwrite(buffer, size, count, stream) _fwrite_CrLf(buffer, size, count, stream)
  39. #undef fputs
  40. #define fputs(buffer, stream) _fputs_CrLf(buffer, stream)
  41. #undef puts
  42. #define puts(buffer) _fputs_CrLf(buffer, stdout)
  43. #undef fputc
  44. #define fputc(chr, stream) _fputc_CrLf(chr, stream)
复制代码

回复 2# 523066680


    CrLf 只是缩写,其实我的全名是:
NulSohStxEtxEotEnqAckBelBsHtLfVtFfCrSoSiDleDc1Dc2Dc3Dc4NakSynEtbCanEmSubEscFsGsRsUs

TOP

本帖最后由 CrLf 于 2015-12-25 05:41 编辑

回复 5# aa77dd@163.com


咱好像跑题了


.........................................................................................................................................................................................................
.........................................................................................................................................................................................................
.........................................................................................................................................................................................................
.........................................................................................................................................................................................................
.........................................................................................................................................................................................................
.........................................................................................................................................................................................................
.........................................................................................................................................................................................................
.........................................................................................................................................................................................................
.........................................................................................................................................................................................................
.........................................................................................................................................................................................................
.........................................................................................................................................................................................................
.........................................................................................................................................................................................................
.........................................................................................................................................................................................................
.........................................................................................................................................................................................................
.........................................................................................................................................................................................................
.........................................................................................................................................................................................................
.........................................................................................................................................................................................................
.........................................................................................................................................................................................................
.........................................................................................................................................................................................................
.........................................................................................................................................................................................................
.........................................................................................................................................................................................................
  1. @echo off & setlocal EnableDelayedExpansion
  2. set /a n1=400,n2=250
  3. set /a Width=n1,Height=n1
  4. set /a Lines=350
  5. set /a EndLine=Lines-Height
  6. set "Count=0"
  7. for /l %%b in (0 4 %Width%) do (
  8. set /a r1=%%b*%%b-n1*n1
  9. if !r1! leq 0 (set "inBigCycle=1") else set "inBigCycle=0"
  10. set /a r2=%%b*%%b-n2*n2
  11. if !Count!==0 set /a rMin=r[0]=!r2!
  12. if !r2! geq 0 if !inBigCycle!==1 (
  13. set /a Count+=1
  14. for %%z in (!Count!) do set "r[%%z]=!r2!"
  15. set "rMax=!r2!"
  16. )
  17. )
  18. set /a "partLen=Count/7,p1=partLen+=^!partLen,p2=2*Count/7,p3=3*Count/7,p4=4*Count/7,p5=5*Count/7,p6=6*Count/7,p7=7*Count/7,partLen+=^!partLen"
  19. set /a p1+=!!(p7-p6-p1)*!!(p2-p1)
  20. for /l %%z in (0 1 !Count!) do (
  21. set /a R=G=B=0
  22. if %%z lss !p1! set /a "R=255-255*(%%z)/(p1)"
  23. if %%z geq !p3! if %%z lss !p4! set /a "R=(255*(%%z-p3)/(partLen))"
  24. if %%z geq !p4! set /a "R=255"
  25. if %%z leq !p1! if %%z lss !p2! set /a "G=255*(%%z)/(p1)"
  26. if %%z geq !p1! if %%z lss !p2! set /a "G=255*(%%z-p1)/(p1)"
  27. if %%z geq !p2! if %%z lss !p4! set /a "G=255"
  28. if %%z geq !p4! if %%z lss !p7! set /a "G=255-255*(%%z-p4)/(!p3!)"
  29. if %%z lss !p2! set /a "B=255"
  30. if %%z geq !p2! if %%z lss !p3! set /a "B=255-255*(%%z-p2)/(partLen)"
  31. set /a n=R*256*256+G*256+B
  32. cmd /c "exit /b %%n%%"
  33. set "RGB[%%z]=#!=ExitCode:~-6!"
  34. )
  35. (for /l %%a in (-%Height% 17 %EndLine%) do (
  36. set "ubb="
  37. for /l %%b in (-%Width% 4 %Width%) do (
  38. set "fontcolor="
  39. set /a r2=%%a*%%a+%%b*%%b-n2*n2
  40. if !r2! geq !rMin! if !r2! leq !rMax! (
  41. for /l %%z in (0 1 !Count!) do (
  42. if !r[%%z]! leq !r2! set nnn=%%z&set "fontcolor=!RGB[%%z]!"
  43. )
  44. )
  45. if not defined fontcolor set "fontcolor=white"
  46. set "ubb=!ubb![color=!fontcolor!].[/color]"
  47. )
  48. echo;!ubb!
  49. )) >ubb.txt
  50. pause
复制代码
2

评分人数

TOP

返回列表