[问题]如何解决sed的正则表达式对ASCII值>255字符失效的问题?

sh/bash/dash/ksh/zsh等Shell脚本
回复
头像
spider5
帖子: 351
注册时间: 2005-12-15 21:52
送出感谢: 0
接收感谢: 0

[问题]如何解决sed的正则表达式对ASCII值>255字符失效的问题?

#1

帖子 spider5 » 2008-03-28 9:11

比如说:
18:00:03 2.03 àA 2.85 -0.83 -0.29 106.2 11.05 0

代码: 全选

..:..:..      \([^A]\...\)  .

最后的句点是无法匹配注音符号的,我想做的是把这一行2.03前面和后面的内容都删除,如何实现?
头像
yaoms
帖子: 4953
注册时间: 2007-10-19 14:51
来自: 深圳
送出感谢: 0
接收感谢: 2 次

#2

帖子 yaoms » 2008-03-28 9:12

一个句点不行,用两个,两个不行用三个。那个字符可能是多字节的。
Nothing 有事请发邮件到 yms541 AT gmail.com
alias 爱慕颇雷尔='mplayer'
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙
送出感谢: 4 次
接收感谢: 256 次

#3

帖子 eexpress » 2008-03-28 9:25

cut -b试试
● 鸣学
头像
bones7456
论坛版主
帖子: 8495
注册时间: 2006-04-12 20:05
来自: 杭州
送出感谢: 0
接收感谢: 8 次
联系:

#4

帖子 bones7456 » 2008-03-28 10:56

那字符两个字节的.

代码: 全选

$ echo -n "à" | hex
0x00000000: c3 a0                   -                         ..


其实,如果你只是想取出 2.03 的话,简单 awk '{print $2}' 就可以了啊
关注我的blog: ε==3
头像
spider5
帖子: 351
注册时间: 2005-12-15 21:52
送出感谢: 0
接收感谢: 0

#5

帖子 spider5 » 2008-03-30 0:30

4楼的主意不错,这是一系列复杂处理中的一个,实在不想编程序。
yaoms的想法是不对的,我用.*都表示不了,更不用说..了,所以才有"."只能代表ascII的结论,另外虽然它是双字节字符,在utf-8里只占一个位置。
回复

回到 “Shell脚本”