Chinaunix首页 | 论坛 | 博客
  • 博客访问: 300006
  • 博文数量: 49
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 901
  • 用 户 组: 普通用户
  • 注册时间: 2013-03-31 14:32
个人简介

追求卓越 因为经历,所以幸福

文章分类

全部博文(49)

文章存档

2015年(5)

2014年(30)

2013年(14)

分类: 嵌入式

2014-03-05 15:14:58

正则表达式(Regular Expression) [^,*][^,]*区别:

$ sed 's/[^,]*/{&}/' example.txt

$ sed 's/[^,*]/{&}/' example.txt 

使用此特殊字符匹配任意字符或字符串的重复多次表达式。例如:

c o m p u * t       将匹配字符u一次或多次。

l  只匹配[ ] 内字符。可以是一个单字符,也可以是字符序列

[ ]在指定模式匹配的范围或限制方面很有用。结合使用*[ ]更是有益,

例如:[ A - Z a - Z ] *将匹配所有单词

注意:^符号的使用,当直接用在第一个括号里,意指否定或不匹配括号里内容。

:[^a-zA-Z]匹配任一非字母型字符,而[ ^ 0 - 9 ]匹配任一非数字型字符。

$ sed 's/[^,*]/{&}/' example.txt 

表示把开头不是一个或多个“,”时的第一个字符加上{}

只对第一个字符“1”加上了{},主要原因是[ ]内的字符一次只匹配一个。

 

$ sed 's/[^,]*/{&}/' example.txt

表示把不是“,”之前的所有字符串,加上{}

截取字符串

原文本文件 example.txt

102,John Smith,IT Manager

103,Raj Reddy,Sysadmin

104,Anand Ram,Developer

105,Jane Miller,Sales Manager

,123

,lin,feng

,,,sss

a) 截取非数字的所有字符  --失败

$ sed 's/[^0-9]*/ /' example.txt 

失败原因:[^0-9]表示匹配一非数字型字符,而[^0-9]*表示一或多个非数字型字符,但只要有一个字符匹配成立,就进行替换。

b) 截取非数字的所有字符  --成功

$ sed 's/[^0-9].*/ /' example.txt

阅读(3230) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~