bbs.ChinaUnix.net
首页 | 新闻 | Linux | FreeBSD | AIX | Windows | 博客 | 论坛 | 存储 | 网络 | 人才 | Wiki | 资料 | 读书 | 手册 | 下载 | 空间 | 搜索
  免费注册 | 忘记密码 | 会员登录 | 搜索 | 帮助 


怎样提取在()和[]括号中的ip地址

  首页 » 论坛 » Shell »
[打印] [收藏] [本帖文本页] [推荐此主题给朋友]

字符串:

  1. (24.131.193.74)
  2. (24.190.43.92)
  3. (24.202.137.49)
  4. (24.58.10.239)
  5. (24.6.217.109)
  6. ([34.144.229.208])
  7. (4.5.55.176)
  8. (61.177.184.210)
复制代码


请教大家怎么样把这段里面的ip地址提取出来。我想使用awk中的 gensub(),不知道大家有没有办法。

(觉得不解的是 gensub()里面的 正则和awk 还有 比如 apache 的rewrite里面的正则,以及php里面的正则,用法有区别吗? 特别是 逻辑运算符 “和”“或”  究竟是 &&  ||  还是 & |  )

请大家指教~~  :em10:
__________________________________
我将扼住命运的咽喉,它绝不能使我屈服...
我的学习笔记 http://www.kreny.com



怎样提取在()和[]括号中的ip地址

提示: 作者被禁止或删除 内容自动屏蔽
__________________________________
unix管理员QQ群:33279021,DB群33659438
,公司提供专业unix/oracle/db2服务和软件集成开发服务
QQ:4600956 MSN:danieyren@hotmail.com



怎样提取在()和[]括号中的ip地址

awk -F"[\(\)]"  '{print $2}' filename
__________________________________
人~生~不~如~意.........十~有~八~~~九

SYSTEM & SHELL & DATABASE  :   (( AIX4.3.2.0 && DB2)  || SCO5.0.5 ) && KSH



怎样提取在()和[]括号中的ip地址

见谅没看到方括号,可写在-F里加\也不行,以后再试,这样也可:

  1. awk  'gsub("[^0-9.]","")'  filename
复制代码


这样出花括号也不怕啦
__________________________________
人~生~不~如~意.........十~有~八~~~九

SYSTEM & SHELL & DATABASE  :   (( AIX4.3.2.0 && DB2)  || SCO5.0.5 ) && KSH



怎样提取在()和[]括号中的ip地址

這樣如何:
sed 's/[^0-9.]//g' filename
__________________________________
君子博學而日參省乎己,則知明而行無過矣。

:() { :|:& }; :      # <--- 這個別亂跑!好奇會死人的!
echo '十人|日一|十十o' | sed 's/.../&\n/g'   # <--- 跟你講就不聽,再跑這個好了...



怎样提取在()和[]括号中的ip地址

哈,对啊SED合适.我老是跟着楼主的想法走,他提到AWK和GENSUB我就不转弯了,老毛病.向版主学习
__________________________________
人~生~不~如~意.........十~有~八~~~九

SYSTEM & SHELL & DATABASE  :   (( AIX4.3.2.0 && DB2)  || SCO5.0.5 ) && KSH



怎样提取在()和[]括号中的ip地址

樓上謙虛了...  ^_^
用 awk 也不錯啊,只要動一下小手術就行:
cat filename | tr -s '([])' ':' | awk -F: '{print $2}'
__________________________________
君子博學而日參省乎己,則知明而行無過矣。

:() { :|:& }; :      # <--- 這個別亂跑!好奇會死人的!
echo '十人|日一|十十o' | sed 's/.../&\n/g'   # <--- 跟你講就不聽,再跑這個好了...



怎样提取在()和[]括号中的ip地址

提示: 作者被禁止或删除 内容自动屏蔽
__________________________________
unix管理员QQ群:33279021,DB群33659438
,公司提供专业unix/oracle/db2服务和软件集成开发服务
QQ:4600956 MSN:danieyren@hotmail.com



怎样提取在()和[]括号中的ip地址

一觉起来居然有这么多回复~~ 太感谢大家了~~   呵呵
我也来说说我的苯方法吧~~ 分成了两部分。

  1. awk '/HELO/&&$6~/\[/ {print gensub(/\(\[(.*)\]\)/,"\\1", 1, $6)}' /home/kreny/sa-learn/spam/* | sort -u

  2. awk '/HELO/&&$6!~/\[/ {print gensub(/\((.*)\)/,"\\1", 1, $6)}' /home/kreny/sa-learn/spam/* | sort -u
复制代码


原文本其实就是邮件,从里面找出含有邮件地址的邮件头的一行。诸如:
  1. Received: from unknown (HELO vod114.com) (218.90.97.253)
  2. Received: from unknown (HELO hearts106161085.hearts.ne.jp) ([219.106.161.85])
  3. eceived: from unknown (HELO CPE-203-51-8-153.nsw.bigpond.net.au) (203.51.8.153)
  4. Received: from unknown (HELO CXNETWORK) ([219.237.80.124])
  5. Received: from unknown (HELO d-os1-015.globalnet.hr) (213.149.35.149)
复制代码


测试结果:

这个正确显示了
  1. sed 's/[^0-9.]//g'
  2. tr -s '([])' ':' | awk -F: '{print $2}'
  3. awk '{gsub(/\(|\)|\[|\]/,"");print $NF}'
复制代码


最终代码是:

  1. awk '/HELO/ {print $6}' /home/kreny/sa-learn/spam/* | sed 's/[^0-9.]//g' | sort -u
  2. awk '/HELO/ {print $6}' /home/kreny/sa-learn/spam/* | tr -s '([])' ':' | awk -F: '{print $2}' | sort -u
  3. awk '/HELO/ {gsub(/\(|\)|\[|\]/,""); print $6}' /home/kreny/sa-learn/spam/* | sort -u
复制代码


我在我的网站上也更新了
http://linux.dalouis.com/computer/linux/nullida.html
__________________________________
我将扼住命运的咽喉,它绝不能使我屈服...
我的学习笔记 http://www.kreny.com



怎样提取在()和[]括号中的ip地址



QUOTE:
原帖由 "Mercury_cn" 发表:

这样出花括号也不怕啦



引申以下~~ 大家能否讨论一下获取IP地址和邮件地址的方法。

例如:

"abc@domain.com"
"//abc@domain.com"
'abc@domain1.com,abc@domain2.com"

关键是这些不规则的同时出现的时候。(但是和邮件地址混杂的一定是符号)

:em21:  期待中,我自己也在测试~~~ :em03:
__________________________________
我将扼住命运的咽喉,它绝不能使我屈服...
我的学习笔记 http://www.kreny.com


  首页 » 论坛 » Shell »
Copyright © 2001-2010 ChinaUnix.net All Rights Reserved     联系我们:

感谢所有关心和支持过ChinaUnix的朋友们    转载本站内容请注明原作者名及出处

京ICP证041476号


清除 Cookies - ChinaUnix - Archiver - WAP - TOP

GMT+8, 2010-02-09 20:28, Processed in 0.026644 second(s), 7 queries, Gzip enabled.