Board logo

标题: [文本处理] grep新版本的一些问题 [打印本页]

作者: 娜美    时间: 2023-9-27 14:39     标题: 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
复制代码

作者: wanghan519    时间: 2023-9-27 17:06

回复 1# 娜美


    我这里原来locale是zh_CN.UTF-8,-P参数正常
  1. echo 你好 | LC_CTYPE=zh_CN.GBK grep -P '你好'
复制代码
同样报错,所以应该是locale必须设为UTF8
作者: 娜美    时间: 2023-9-27 19:01

本帖最后由 娜美 于 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
复制代码

作者: wanghan519    时间: 2023-9-28 03:04

回复 3# 娜美


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

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

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




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2