当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 17 篇帖子 ]  前往页数 1, 2  下一页
作者 内容
1 楼 
 文章标题 : 求教正则表达式高手
帖子发表于 : 2009-04-13 5:57 

注册: 2008-12-01 7:52
帖子: 307
地址: 蜀山
送出感谢: 0 次
接收感谢: 0 次
我有一个b.txt文件如下
cmdblock@debian:~/dos/bash/test$ cat b.txt
abc 1
abc 20
abc 3 IN
abc 101
我想删除掉 abc 1, abc 20, abc 101,这三个行。执行如下命令
cmdblock@debian:~/dos/bash/test$ cat b.txt | sed '/^abc *[0-9]$/d'
abc 20
abc 3 IN
abc 101
怎么得到的结果不对呢?
这个正则表达式/^abc *[0-9]$/错在哪里?
我对这个正则表达式的理解是:匹配以abc 开头,数字0到9结束的字符串


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 求教正则表达式高手
帖子发表于 : 2009-04-13 6:09 

注册: 2008-05-24 8:30
帖子: 1453
送出感谢: 2
接收感谢: 30
代码:
sed '/^abc \+[[:digit:]]\+$/d' b.txt


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 求教正则表达式高手
帖子发表于 : 2009-04-13 8:21 

注册: 2007-10-04 15:23
帖子: 147
送出感谢: 0 次
接收感谢: 0 次
sed -e '/^abc.*[^0-9]$/d' b.txt


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 求教正则表达式高手
帖子发表于 : 2009-04-13 9:45 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 272
/^abc *[0-9]$/
空格转义。单数字结束也不对。[0-9]+。至少有一个数字


_________________
● 鸣学


页首
 用户资料  
 
5 楼 
 文章标题 : Re: 求教正则表达式高手
帖子发表于 : 2009-04-13 10:20 
头像

注册: 2009-04-09 9:16
帖子: 69
送出感谢: 0 次
接收感谢: 0 次
sed '/^abc.*[0-9]$/d'


页首
 用户资料  
 
6 楼 
 文章标题 : Re: 求教正则表达式高手
帖子发表于 : 2009-04-13 10:22 
头像

注册: 2009-04-09 9:16
帖子: 69
送出感谢: 0 次
接收感谢: 0 次
sed -n '/^abc.*[^0-9]$/p'


页首
 用户资料  
 
7 楼 
 文章标题 : Re: 求教正则表达式高手
帖子发表于 : 2009-04-13 10:23 
头像

注册: 2009-04-09 9:16
帖子: 69
送出感谢: 0 次
接收感谢: 0 次
grep ^abc | grep -v [0-9]$


页首
 用户资料  
 
8 楼 
 文章标题 : Re: 求教正则表达式高手
帖子发表于 : 2009-04-13 10:23 
头像

注册: 2009-04-09 9:16
帖子: 69
送出感谢: 0 次
接收感谢: 0 次
grep ^"abc.*[^0-9]$"


页首
 用户资料  
 
9 楼 
 文章标题 : Re: 求教正则表达式高手
帖子发表于 : 2009-04-13 10:24 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 272
qq274980 写道:
sed '/^abc.*[0-9]$/d'

匹配abcnnnnd0
:em05


_________________
● 鸣学


页首
 用户资料  
 
10 楼 
 文章标题 : Re: 求教正则表达式高手
帖子发表于 : 2009-04-13 10:49 
头像

注册: 2007-05-08 16:26
帖子: 2058
地址: 火星内核某分子内某原子核内
系统: arch
送出感谢: 20
接收感谢: 6
代码:
irb(main):075:0> a=%Q(abc 1
irb(main):076:0" abc 20
irb(main):077:0" abc 3 IN
irb(main):078:0" abc 101)
=> "abc 1\nabc 20\nabc 3 IN\nabc 101"
irb(main):079:0> puts a; a.each_line{|x| puts x if x !~ /^abc.*\d+$/ )}
abc 1
abc 20
abc 3 IN
abc 101
abc 3 IN
=> "abc 1\nabc 20\nabc 3 IN\nabc 101"
irb(main):080:0> a.each_line{|x| puts x if x !~ /^abc.*\d+$/ )}
abc 3 IN
=> "abc 1\nabc 20\nabc 3 IN\nabc 101"



答案是
代码:
/^abc.*\d+$/


代码:
sed -e 's/.*[0-9]$//'  filename


_________________
笔记本 :
F208S : gentoo
A460P i3G D6 : UBUNTU + WIN7
UN43D1 : UBUNTU + WIN7
1000人超级QQ群 LINUX + WIN : 31465544 或 18210387


最后由 sevk 编辑于 2009-04-13 11:58,总共编辑了 1 次

页首
 用户资料  
 
11 楼 
 文章标题 : Re: 求教正则表达式高手
帖子发表于 : 2009-04-13 11:21 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 272
sevk, 说过.*不对的。还来。sed这里没支持非贪婪匹配的?的。
/^abc\ \d+$/


_________________
● 鸣学


页首
 用户资料  
 
12 楼 
 文章标题 : Re: 求教正则表达式高手
帖子发表于 : 2009-04-13 11:59 
头像

注册: 2007-05-08 16:26
帖子: 2058
地址: 火星内核某分子内某原子核内
系统: arch
送出感谢: 20
接收感谢: 6
代码:
sed -e 's/.*[0-9]$//'  b.txt


_________________
笔记本 :
F208S : gentoo
A460P i3G D6 : UBUNTU + WIN7
UN43D1 : UBUNTU + WIN7
1000人超级QQ群 LINUX + WIN : 31465544 或 18210387


页首
 用户资料  
 
13 楼 
 文章标题 : Re: 求教正则表达式高手
帖子发表于 : 2009-04-13 20:42 
头像

注册: 2007-12-20 15:08
帖子: 231
地址: harbin
送出感谢: 0 次
接收感谢: 0 次
grep '^abc .*[0-9]$' b.txt


_________________
Keep trying...never say never. blog: H。U。C
代码:
        .--.
       |o_o |
       |:_/ |           < Hello Girl >
      //   \ \             ------------
     (|     | )
    /'\_   _/`\
    \___)=(___/


页首
 用户资料  
 
14 楼 
 文章标题 : Re: 求教正则表达式高手
帖子发表于 : 2009-04-14 0:04 

注册: 2008-12-01 7:52
帖子: 307
地址: 蜀山
送出感谢: 0 次
接收感谢: 0 次
eexpress 写道:
/^abc *[0-9]$/
空格转义。单数字结束也不对。[0-9]+。至少有一个数字

我还是不太明白,空格转义,转了什么义阿?转义不是要用 \ 这个符号吗?
我觉得它应该匹配abc 232v5,abc sdf9这样的字符串。


页首
 用户资料  
 
15 楼 
 文章标题 : Re: 求教正则表达式高手
帖子发表于 : 2009-04-14 6:10 

注册: 2008-05-24 8:30
帖子: 1453
送出感谢: 2
接收感谢: 30
“/^abc *[0-9]$/” 匹配的是 “abc 5”、“abc 6” 等这样的字符串,匹配 “abc 232v5”、“abc sdf9” 这样的字符串应该用 “/^abc .*[0-9]$”
其实楼主的问题单靠一个样例文本不能很好的描述清楚,单从楼主的贴子来看,可以有很多种理解:
删除以abc开头以数字结尾的行
删除最后一个词是一个十进制整数的行
删除以数字结尾的行
删除只包含两个词的行
只保留以IN结尾的行
只保留包含三个词的行
只保留第三行
....


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 17 篇帖子 ]  前往页数 1, 2  下一页

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译