about grep (1)特殊字符 (2)中文
看过很多grep 和 正则的资料
我想做搜索汉字的操作,以及判断有无乱码等
看到过资料说 正则有 \uXXXX 这样的16进制表示
原想用一个汉字的16进制范围来判断。
但是,发现 grep 里面类似\t,\w,\s这样的特殊字符不能用, '\'这样的写法不行?
$'\t' 这样也不行
我知道还有[print:]这样的写法,在grep 下可以用
但是,还是疑惑
1)如何才能用\t,\w这样的特殊字符表示
2)grep能做 \uXXXX 这样的16进制查找么(汉字判断)
3)grep是unicode编码的么?
请各位点拨一二。
谢谢。
问题点数:100、回复次数:8Top
1 楼alan2k(阿蓝)回复于 2006-03-01 19:21:09 得分 0
up.
没有人知道?
改简单点问
grep 'a*' file.txt
如果这个 a 想用十六进制'x61'来表示。
这句话如何写。
Top
2 楼fierygnu(va_list)回复于 2006-03-02 10:04:40 得分 100
试试用lgrep,支持多语言,UTF-8等。Top
3 楼alan2k(阿蓝)回复于 2006-03-02 10:57:02 得分 0
重点是,想实现的机能是通过 字符的16进制的数字表示来搜索,或者进一步得替换成其他字符。
所以,首先想了解,grep 和sed,awk之类的正则里面,有没有 16进制 的使用方式?
有,或没有。Top
4 楼fierygnu(va_list)回复于 2006-03-02 11:35:44 得分 0
不清楚。google吧。Top
5 楼alan2k(阿蓝)回复于 2006-03-02 11:57:51 得分 0
google了几天了,
准备放弃。
还有救么?Top
6 楼fierygnu(va_list)回复于 2006-03-02 16:34:52 得分 0
用grep -P可以使用PCRE。试试吧。Top
7 楼fierygnu(va_list)回复于 2006-03-02 16:35:44 得分 0
或者直接用pcregrep。Top
8 楼alan2k(阿蓝)回复于 2006-03-02 22:32:47 得分 0
恩,查了pcregrep,大概了解啦。
知道原来我看的正则一直是perl的语法。
perl不懂哈,linux也是才碰,所以啊,
不知道成仙要化多少时间~
其实,就简单的十六进制查找 A字符
xd file | cut ??? | grep '41' (41=A)
我问这个问题的目的是为了解决查找文件的一些乱码,
(乱码不能键盘输入,只能用16进制码)并替换之。
知识有限,只好先用c解决,有空在来看有无简单方法。
估计perl+正则可行。
又,fierygnu(va_list)同学,(写C的同学?va_list,哈)
sed有没有pcregrep这样的版本?
Top




