找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 21307|回复: 4

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

[复制链接]
发表于 2023-9-27 14:39:12 | 显示全部楼层 |阅读模式
本帖最后由 娜美 于 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
复制代码
发表于 2023-9-27 17:06:33 | 显示全部楼层
回复 1# 娜美


    我这里原来locale是zh_CN.UTF-8,-P参数正常
  1. echo 你好 | LC_CTYPE=zh_CN.GBK grep -P '你好'
复制代码
同样报错,所以应该是locale必须设为UTF8
 楼主| 发表于 2023-9-27 19:01:14 | 显示全部楼层
本帖最后由 娜美 于 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
复制代码
发表于 2023-9-28 03:04:59 | 显示全部楼层
回复 3# 娜美


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

官方文档也说,要用LC_CTYPE 指定字符编码,所以可能不是bug,只是我不会在windows里指定使用utf8编码,猜测是因为编译时的参数不太一样吧。。。
https://www.gnu.org/software/grep/manual/grep.html#Character-Encoding
能想到的解决办法就是自己弄个msys2环境,无论是直接用或者装上mingw64自己编译都行
发表于 2023-9-28 23:14:42 | 显示全部楼层
似乎是编译问题,可以改用pcre2grep,语法应该是一样的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 12:04 , Processed in 0.017708 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表