该罗西模式语言,更好的方式来矿您的数据

你好RPL,再见正则表达式!罗西使得寻找在数据数据针草垛轻松了许多。

12 第2页
第2页2

正如你也注意到,输出选择性着色。其图案颜色被分配到可以与被检查-patterns开关:

RedQueen:罗茜mgibbs $罗西-patterns这是罗西v0.99i模式类型颜色------------------------------ --------------- -------- $别名。别名黑d别名小号别名W¯¯别名AMPM别名basic.element_quoted别名basic.matchall定义basic.network_patterns定义红色basic.punctuation定义basic.unmatched定义黑色c.any_comment任何别名basic.datetime_patterns定义蓝色basic.element别名basic.element_bracketed别名定义c.code_only定义注释定义common.denoted_hex定义下划线common.dotted_identifier定义common.dq别名common.dquoted_string别名common.float定义下划线common.graph别名common.hex定义下划线(喀嚓,喀嚓,喀嚓)

如果你想改变模式的颜色分配,你需要使用命令行开关-编码来指定颜色或编辑/usr/local/Cellar/rosie/current/share/rosie/src/core/color-output.lua

就让我们从数据中提取的IP地址中的一个模式:

红方王后:rosie mgibbs$ rosie network。RedQueen:rosie mgibbs$

Hummm。没有输出!这里有什么事是,罗西一直在寻找一个匹配network.ip_address当别的首次发现,罗西退出。我们想要的行为是模仿了Unixgrep命令并查找所有匹配项,因此我们需要使用-grep开关:

RedQueen:罗茜mgibbs $罗西-grep network.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 $

现在,如果你打算做真正有趣的东西与罗茜你要去的地方Rosie的JSON编码进来想获得更处理的输出格式是,我将不得不罗西输出JSON使用-encode JSON开关,然后通过管道将到JQ,一个非常酷的命令行JSON处理器:

RedQueen:rosie mgibbs$ rosie -grep -encode json网络。ip地址:jq {"*": {"pos": 1, "subs":[{"网络。ip_address ": {" pos”:7,“文本”:“127.0.0.1}}],“文本”:“\”tinet 127.0.0.1}}{“*”:{“pos”:1、“潜艇”:[{”网络。ip_address ": {" pos”:7,“文本”:“192.168.0.180}},{“网络。iip_address ": {"pos": 50, "text": "192.168.0.255"}}], "text": "\tinet 192.168.0.180 netmask 0xffffff00 broadcast 192.168.0.255"}} {"*": {"pos": 1, "subs": [{"network。ip_address ": {" pos”:7,“文本”:“169.254.239.110}},{“网络。{"pos": 52, "text": "169.254.255.255"}}], "text": "\tinet 169.254.239.110 netmask 0xffff0000 broadcast 169.254.255.255"}} RedQueen:rosie mgibbs$

当当!现在,我已经得到了我一个有用的结构想要的数据,可以很容易被操纵,分析和存储(其实用JQ提取和重新编码Rosie的JSON进入新的JSON结构,增加了更多的灵活性)。

在本文的开始部分,我展示了查找IPv6地址的可怕的正则表达式。要使用Rosie提取相同的数据,我们首先需要下载中指定的IPv6模式rfc3986.rpl在Rosie的Github回购(这个模式很新,这就是为什么当你通过Brew安装时它不包含在内)中,然后将它添加到Rosie的manifest中。假设您将模式下载到在/ usr /本地/库/罗茜/电流/股/罗茜/ RPL其中其他RPL模式被存储:

RedQueen:rosie mgibbs$ echo”/usr/local/Cellar/rosie/current/share/rosie/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美元

很酷,不是吗?Rosie是一个C库,可以从Go、Python、node调用。js、Ruby、Java等,并希望在不久的将来成为这些语言的本地库。

在罗西的文档花费了一些非常有用的时间讨论如何从这些令人难以置信的数据科学家和网络管理员宝贵的技术CSV和Apache星火日志文件中提取数据。

这是一个简短的进军罗西,正如我希望你grokked,这是一个强大的工具,比正则表达式更可预测,比grep的速度更快,并在高大的数据桩提取你在一个有用的格式所需的数据飞跃。这不只是一个很酷的工具;任何人挖掘大数据集,这是一个梦幻般的和急需的电动工具,将节省时间,避免错误,一般让你的生活更轻松。

评论?想法吗?写信给我或者在下面评论,然后跟随我推特Facebook的。并注册我的新通讯

加入对网络世界的社有个足球雷竞技app区Facebook的LinkedIn对最重要的话题发表评论。
有关:

版权所有©2017年Raybet2

12 第2页
第2页2
IT薪资调查:结果是