+ -
当前位置:首页 → 问答吧 → 关于grep -f的一个问题

关于grep -f的一个问题

时间:2009-10-09

来源:互联网

目标:

将匹配上 ,"vip": 到 ]},{"id": 范围内的所有东西都替换成 回车

不知道命令怎么写。。。。

作者: crazyrabbit   发布时间: 2009-10-09

深奥!
这个范围还真不好懂

作者: t3swing   发布时间: 2009-10-09

将匹配上 ,"vip": 到 ]},{"id": 范围内的所有东西都替换成 \n
sed 's/,"vip":.*]},{"id":/\n/g' try.txt

我知道]是特殊字符,还有谁就不知道了;想利用.*表示所有可能的字符;把上面命令中的]换成\]也没成功
sed 's/,"vip":.*\]},{"id":/\n/g' try.txt

作者: crazyrabbit   发布时间: 2009-10-09

.*换成[^]]可以匹配,但是如果你要去掉的部分有 ] 字符就不行了 ,下班,明天在说!

作者: t3swing   发布时间: 2009-10-09

估计是解析网页的。
一堆一堆去掉就是。

作者: eexpress   发布时间: 2009-10-09

楼上两位都说对了,是网页分析,也确实在两者之间还有左中括号[

内容示例如下:
var members=[{"id":223878989,"vip":false,"selected":false,"mo":false,"name":"\u767d\u83b9","head":"http:\/\/hd27.youknowit.com\/photos\/hd27\/20080506\/13\/50\/tiny_2061l150.jpg","groups":["\u4e2d\u5c0f\u5b66\u540c\u5b66"]},{"id":228989037,"vip":false,"selected":true,"mo":true,"name":"\u535c\u8fea","head":"http:\/\/hdn511.mmimg.cn\/photos\/hdn511\/20090803\/2345\/tiny_m3N5_3709a204234.jpg","groups":[]},。。。。。。。。

上面不断循环的样子,我只想提取出id后面的数字,并每行只列一个

作者: crazyrabbit   发布时间: 2009-10-09

直接提取匹配的就可以了: cat a.txt | grep -o '"id":[0-9]*'
cat e.txt|grep -o 'var[^"]*"id":[0-9]*'匹配第一个
啥事都逃不过ee的法眼啊!网页解析没搞过!

作者: t3swing   发布时间: 2009-10-10

谢谢高手,厉害!

作者: crazyrabbit   发布时间: 2009-10-10

C:\Users\aijieqiang\Desktop>perl -lne "print "$1" while /id\":(\d+)/g" test.txt
223878989
228989037

作者: 小小输入法   发布时间: 2011-04-30