免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123
最近访问板块 发新帖
楼主: good_luck_68
打印 上一主题 下一主题

[文本处理] 怎么用grep、awk、sed匹配出某个字符串,而不是字符串所在的整行 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2014-05-12 18:02 |只看该作者
@Shell_HAT
如果bb是一正则表达式,$i该如何赋值比较bb为 $i~/2014[0-9]{1,2}/
[root@mysql-169 ~]# cat test1.txt
2014:10:54:07 20140512105355 20140512105355
2014:16:08:36 20140512160651 20140512160651
2014:17:00:35 20140512165939 20140512165939

取出 2014:10:54:07 20140512105355 20140512105355
源文件其实为:
175.20.26.19 - - [12/May/2014:10:54:07 +0800] POST /p/result?status=1&oid=2014051210535568540 HTTP/1.0 200 2965 9 ?status=1&oid=2014051210535568540 Mozilla/5.0 (Linux; U; Android 4.3; zh-cn; SM-N9002 Build/JSS15J) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 0.009
27.149.237.36 - - [12/May/2014:16:08:36 +0800] GET /p/result?status=1&oid=2014051216065132350 HTTP/1.0 200 2884 9 ?status=1&oid=2014051216065132350 Mozilla/5.0 (Linux; U; Android 4.1.2; zh-cn; HUAWEI C8813Q Build/HuaweiC8813Q) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 0.009
117.136.33.3 - - [12/May/2014:17:00:35 +0800] GET /p/result?status=1&oid=2014051216593980730 HTTP/1.0 200 2884 8 ?status=1&oid=2014051216593980730 Mozilla/5.0 (Linux; U; Android 4.2.2; zh-cn; Nexus 4 Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 0.008

论坛徽章:
780
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
22 [报告]
发表于 2014-05-12 18:18 |只看该作者
回复 1# good_luck_68
grep本来就有-o选项,表示only match,只打印匹配的内容。
  1. [masonzhu@rat122 zzz]$ grep -oP "(?<=^.)." i
  2. b
  3. e
  4. 5
  5. [masonzhu@rat122 zzz]$ grep -o "qwe" i
  6. qwe
复制代码

论坛徽章:
3
酉鸡
日期:2014-04-23 17:17:56丑牛
日期:2014-05-08 11:41:302015亚冠之德黑兰石油
日期:2015-08-03 11:14:27
23 [报告]
发表于 2014-05-12 22:14 |只看该作者
mark下,在下想到的,大神们说了,没想到到大神们也说了

论坛徽章:
0
24 [报告]
发表于 2014-05-13 10:39 |只看该作者
回复 21# 莫侠007
参考 http://bbs.chinaunix.net/thread-1332348-1-1.html ,然后thnn 回答自己的问题了
[root@mysql-169 ~]# awk --re-interval -f awk.test test1.txt
2014:10:54:07 20140512105355 20140512105355
2014:16:08:36 20140512160651 20140512160651
2014:17:00:35 20140512165939 20140512165939
[root@mysql-169 ~]# cat awk.test
BEGIN {
i =0
}
{
x=$0
while (match(x, "2014[0-9]{1,10}" > 0) {
   printf substr(x, RSTART, RLENGTH) " "
   x = substr(x, RSTART+RLENGTH)
}
print ""
}

再一次谢谢 @Shell_HAT

   

论坛徽章:
1
处女座
日期:2014-06-01 17:09:46
25 [报告]
发表于 2014-05-13 13:46 |只看该作者
grep -o qwe 1.txt

论坛徽章:
0
26 [报告]
发表于 2014-05-13 14:13 |只看该作者
回复 25# daxuewuhen2014
grep -o xxx 1.txt 的话 匹配一次 换行一次 不符合要求吧


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

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP