你也注意到了,输出是选择性地颜色。模式颜色分配给可以检查吗模式
开关:
RedQueen:罗西mgibbs罗西美元模式这是罗西v0.99i模式类型的颜色- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -美元的别名。别名黑D别名S别名W别名ampm别名基本任何别名。datetime_patterns蓝色的基本定义。基本元素的别名。基本element_bracketed别名。基本element_quoted别名。matchall定义basic.network_patterns红色的基本定义。标点符号的基本定义。无与伦比的定义黑色c。any_comment定义c。code_only定义定义common.denoted_hex定义强调共同发表评论。dotted_identifier定义常见。dq别名常见。dquoted_string别名常见。定义强调常见的浮动。常见图别名。十六进制的定义强调(剪,剪,剪断)
如果你想改变颜色作业模式需要使用命令行开关编码指定颜色或编辑/usr/local/Cellar/rosie/current/share/rosie/src/core/color-output.lua
。
我们从数据中提取一个模式,IP地址:
RedQueen:罗西mgibbs罗西美元网络。ip_address ifconfig。txt RedQueen:罗西mgibbs $
嗯。没有输出!发生了什么是,罗西在寻找匹配network.ip_address
当别的东西被发现,罗西辞职。我们想要的是模拟Unix的行为grep
命令和找到所有匹配,所以我们需要使用grep
开关:
RedQueen:罗西mgibbs $罗西grep网络。ip_address ifconfig。txt 127.0.0.1 192.168.0.180 192.168.0.255 169.254.239.110 169.254.255.255 RedQueen:罗西mgibbs美元
现在,如果你要做的真正有趣的东西和罗西你会想要一个更适合加工的输出格式,罗茜的JSON编码。我要罗西输出JSON使用json编码
开关然后管金桥
一个很酷的JSON命令行处理器:
RedQueen:罗西mgibbs $罗西grep json编码的网络。ip_address ifconfig。txt |金桥{“*”:{“pos”: 1、“潜艇”:[{”网络。ip_address ": {" pos”: 7,“文本”:“127.0.0.1}}],“文本”:“\”tinet 127.0.0.1}} {“*”: {“pos”: 1、“潜艇”:[{”网络。ip_address ": {" pos”: 7,“文本”:“192.168.0.180}},{“网络。ip_address ": {" pos”: 50,“文本”:“192.168.0.255}}],“文本”:“\ tinet 192.168.0.180子网掩码0 xffffff00广播192.168.0.255 "}}{“*”:{“pos”: 1、“潜艇”:[{”网络。ip_address ": {" pos”: 7,“文本”:“169.254.239.110}},{“网络。ip_address ": {" pos”: 52岁的“文本”:“169.254.255.255}}],“文本”:“\ tinet 169.254.239.110子网掩码0 xffff0000广播169.254.255.255”}}RedQueen:罗西mgibbs美元
哈!现在我有我想要的数据在一个有用的结构,可以很容易地操纵,分析,存储(实际上,使用金桥
提取和编码罗茜的JSON到新的JSON结构增添了更多的灵活性)。
在本文中,我展示了可怕的正则表达式找到IPv6地址。使用罗西提取相同的数据,我们需要首先下载IPv6模式中指定rfc3986.rpl
在罗西的Github回购(这种模式是相当新的,这就是为什么不包括当你安装通过酿造)然后将它添加到罗西的清单。让我们假设你下载模式/usr/local/Cellar/rosie/current/share/rosie/rpl
其他RPL模式存储:
RedQueen:罗西mgibbs回声“/ usr /地方/美元地窖/罗西/电流/分享/罗西rpl / rfc3986。rpl”> > /usr/local/Cellar/rosie/current/share/rosie/MANIFEST RedQueen:罗西mgibbs $罗西grep json IPv6address ifconfig编码。txt |金桥{“*”:{“pos”: 1、“文本”:“\ tinet6:: 1 "}} {“*”: {“pos”: 1、“文本”:“\ tinet6 fe80:: 1 "}} {“*”: {“pos”: 1、“文本”:“\ tinet6 fe80:: 425:850:43a6:5863}} {“*”: {“pos”: 1、“文本”:“2605年\ tinet6: e000:6a0b: 2500:86d: 8286: ca88:9f8“}} {“*”: {“pos”: 1、“文本”:“2605年\ tinet6: e000:6a0b: 2500: e952: c1e6:2031: b452“}} {“*”: {“pos”: 1、“文本”:“\ tinet6 fe80:: 1493:92de: 58 ee: 96 eb}} {“*”: {“pos”: 1、“文本”:“\ tinet6 fe80:: 42 fb: 52 c5: cff7:807e“}} {“*”: {“pos”: 1、“文本”:“37 b0 \ tinet6 fe80::: cdae: 5 ad4:4f0e "}} {“*”: {“pos”: 1、“文本”:“8 e14:3930 \ tinet6 fe80::: f5f9: ae9c“}} RedQueen:罗西mgibbs美元
很酷,不是吗?罗西可以作为C库,可以从,Python,节点。js、Ruby、Java等,希望在不久的将来这些语言本地库。
罗西文档花费一些非常有用的时间讨论如何从CSV和Apache火花日志文件中提取数据非常有价值的技术数据科学家和网络管理员。
这是一个简短的进军罗西,我希望您心意相通,这是一个强大的工具,比regex更可预测,速度比grep,跳跃在高桩提取数据有用的格式。这不仅仅是一个很酷的工具;对于任何挖掘大数据集,这是一个神奇的和急需的电力工具,可以节省时间,避免错误,通常使你的生活更容易。