LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 681|回复: 12

请教,如何实现这样的功能

[复制链接]
发表于 2006-12-14 21:18:51 | 显示全部楼层 |阅读模式
遇到一个问题: 有一个网页,我想把里面的单词都给提取出来,文件中每个单词都由">"和"<"包围起来的.比如 >hello<
我想用grep来实现,写成这样
cat a.html >grep -o '[>][A-Z|a-z]\{1,\}[<]'
但是这样会把 > <也输出来了,有没有办法不要输入>和<呢?
 楼主| 发表于 2006-12-14 22:01:05 | 显示全部楼层
只好先用两次grep来实现了.
回复 支持 反对

使用道具 举报

发表于 2006-12-14 23:35:20 | 显示全部楼层
  1. cat a.txt | grep -io '\<[a-z]*\>'
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-12-15 15:05:49 | 显示全部楼层
Post by helo_aBiNg
  1. cat a.txt | grep -io '\<[a-z]*\>'
复制代码

不行呀,这样输出没有结果呢
回复 支持 反对

使用道具 举报

发表于 2006-12-15 15:45:50 | 显示全部楼层
cat filename|tr '(>|<)' '\n'|grep '[a-zA-Z0-9]'
回复 支持 反对

使用道具 举报

发表于 2006-12-15 16:03:04 | 显示全部楼层
Post by tingxx
不行呀,这样输出没有结果呢
~$ cat a.txt
>helo<  >heloo<
>HElooo<
>hEloooo<

~$ cat a.txt | grep -io '\<[a-z]*\>'
helo
heloo
HElooo
hEloooo

:confused:
回复 支持 反对

使用道具 举报

发表于 2006-12-15 16:59:35 | 显示全部楼层
呵,参数 -io是什么意思呀,我怎么没找到呀,谢谢,-i是忽略大小写嘛
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-12-15 18:14:51 | 显示全部楼层
<p>abc</p>

文件内容如上,怎么用楼上的grep -io '\<[a-z]*\>'
会出现p abc p呢??
回复 支持 反对

使用道具 举报

发表于 2006-12-15 19:14:48 | 显示全部楼层
Post by tingxx
<p>abc</p>
文件内容如上,怎么用楼上的grep -io '\<[a-z]*\>'
会出现p abc p呢??
这个"grep"语句是配匹所有字符串的,可以是由任何方式分隔的;而楼主文件内容如果都形如'<p>abc</p>'的话,改一下:
  1. cat a.txt | grep -io '\<[a-z]\{2,\}\>'
复制代码
这样就配匹多于1个字符的单词了,比如<p>a</p>中的'a'将不被输出

所以干脆屏蔽掉'<p>'与'</p>':
  1. cat a.txt | sed -e 's:<p>\([a-zA-Z]*\)</p>:\1:'
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-12-15 20:38:43 | 显示全部楼层
不止有<p> 还有<html> href ...晕了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表