LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: lichengshuang

cut sed 组合 请教更好的表达式

[复制链接]
发表于 2007-6-21 14:05:38 | 显示全部楼层
传统的UNIX Shell并不擅长分析xml。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2007-6-21 16:31:16 | 显示全部楼层
或者可以使用 xmlgawk 处理

XMLgawk Home Page
http://home.vrweb.de/~juergen.kahrs/gawk/XML/

P.S.
突然看到好多用Perl的,呵
回复 支持 反对

使用道具 举报

发表于 2007-6-22 08:49:50 | 显示全部楼层
用awk就可以巴
回复 支持 反对

使用道具 举报

发表于 2007-6-22 23:19:39 | 显示全部楼层
awk 和 perl 就没什么区别了。:)。
回复 支持 反对

使用道具 举报

发表于 2007-6-24 10:51:38 | 显示全部楼层
Post by 晨想
马甲Show:终极幻想 黯然销魂 DawnFantasy FinalFantasy ArmageddonMa 。


原来 终极幻想 是晨想姐姐的马甲呀,faint
回复 支持 反对

使用道具 举报

发表于 2007-6-24 21:24:41 | 显示全部楼层
awk 'BEGIN{FS="IPADDR=\"";RS=RS"|\"/>"}NF==2{print $2}'
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-6-24 21:28:41 | 显示全部楼层
假如要在提取ip地址的时候,把他相应的mac地址也要提取出来,下面这个组合能够提取出来
perl -lne 'print "$1\t" , $2 if/HWADDR="(.*)" IPADDR="(.*)"/'
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-6-24 21:46:51 | 显示全部楼层

可以省去一个过滤

Post by 晨想
如果可以用perl的话,:
$ perl -lne 'print $1 if /IPADDR="(.*)"/' iptest
202.219.234.18
202.219.234.30
202.219.234.42
202.219.234.54
202.219.234.66
202.219.234.78
202.219.234.90
202.219.234.102
202.219.234.114
202.219.234.126
202.219.234.138
202.219.234.150


直接用 sed -n  '/HOSTNAME="delivery"/,/IPADDR=/p' *.xml | perl -lne 'print $1 if /IPADDR="(.*)"/'
就可以过滤出ip
回复 支持 反对

使用道具 举报

发表于 2007-6-24 22:01:33 | 显示全部楼层
直接用上面的awk不就可以出来ip吗?
如果还要mac的话

  1. awk 'BEGIN{FS="HWADDR="|" IPADDR="";RS=RS"|"/>"}NF==3{print $2" "$3}'
复制代码

不需要一直过滤吧.
不过看起来perl是比awk集成的多一些. 我都拿awk当编程语言了.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-6-25 09:06:10 | 显示全部楼层

还不错哦

Post by lastart
直接用上面的awk不就可以出来ip吗?
如果还要mac的话

  1. awk 'BEGIN{FS="HWADDR="|" IPADDR="";RS=RS"|"/>"}NF==3{print $2" "$3}'
复制代码

不需要一直过滤吧.
不过看起来perl是比awk集成的多一些. 我都拿awk当编程语言了.



还不错哦 ,谢谢你
回复 支持 反对

使用道具 举报

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

本版积分规则

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