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

[文本处理] grep新版本的一些问题

本帖最后由 娜美 于 2023-9-27 19:21 编辑

http://bcn.bathome.net/tool/3.11/grep64.exe

使用第三方
grep.exe  --v3.11 版本, 使用bat方法用-P参数时 提示:   grep: -P supports only unibyte and UTF-8 locales
难道新的grep3.11版本需要加什么参数吗?   还是版本自身编译问题?   感觉变化好大哦  !

grep.exe  --v3.11
  1. echo 000 | grep -P "[[:digit:]]"
  2. grep: -P supports only unibyte and UTF-8 locales
复制代码
但用grep.exe  --v2.51     正常
  1. echo 000 | grep -P "[[:digit:]]"
  2. 000
复制代码

回复 1# 娜美


    我这里原来locale是zh_CN.UTF-8,-P参数正常
  1. echo 你好 | LC_CTYPE=zh_CN.GBK grep -P '你好'
复制代码
同样报错,所以应该是locale必须设为UTF8

TOP

本帖最后由 娜美 于 2023-9-27 19:27 编辑

回复 2# wanghan519

旧版本grep 2.51都能正常,  直接执行-P

  1. echo 000 | grep -P "[[:digit:]]"
  2. 000  
复制代码



但新版grep3.11  bat执行报错
  1. echo 000 | grep -P "[[:digit:]]"
  2. grep: -P supports only unibyte and UTF-8 locales
复制代码

TOP

回复 3# 娜美


    我这的是git for windows里的3.1版本,也有这个问题

官方文档也说,要用LC_CTYPE 指定字符编码,所以可能不是bug,只是我不会在windows里指定使用utf8编码,猜测是因为编译时的参数不太一样吧。。。
https://www.gnu.org/software/grep/manual/grep.html#Character-Encoding
能想到的解决办法就是自己弄个msys2环境,无论是直接用或者装上mingw64自己编译都行

TOP

似乎是编译问题,可以改用pcre2grep,语法应该是一样的

TOP

返回列表