使用Raku(前身为Perl_6)
raku -ne '.split(/ <[/=]> /).[2,4,7].put;'
示例输入:
/logs/tc0001/tomcat/tomcat7.1/conf/catalina.properties:app.env.server.name = demo.example.com
/logs/tc0001/tomcat/tomcat7.2/conf/catalina.properties:app.env.server.name = quest.example.com
/logs/tc0001/tomcat/tomcat7.5/conf/catalina.properties:app.env.server.name = www.example.com
样例输出:
tc0001 tomcat7.1 demo.example.com
tc0001 tomcat7.2 quest.example.com
tc0001 tomcat7.5 www.example.com
上面是一个使用Raku编写的解决方案,它是Perl编程语言家族的成员之一。简而言之,输入使用
-ne
(逐行读取,非自动打印)命令行标志进行逐行读取。行通过正则表达式
/=
进行
split
,该正则表达式由使用
<[
]>
运算符创建的自定义字符类组成。然后将元素
[2,4,7]
put
以给出上面的结果。
当然,上述是一个“裸骨”实现,而且Raku是Perl语言家族的一种语言,TMTOWTDI适用于此。因此,行可以使用由
|
“OR”运算符分隔的文字字符进行
split
。元素编号(在Perl和Raku中都是从零开始索引)可以通过向
split
例程添加
:skip-empty
副词来缩紧。可以使用
map
从每个元素中去除空格,并使用
\t
制表符
join
所需的元素(现在是
[1,3,6]
),从而得到以下结果:
raku -ne '.split(/ "/" | "=" /, :skip-empty).map(*.trim).[1,3,6].join("\t").put;' file
tc0001 tomcat7.1 demo.example.com
tc0001 tomcat7.2 quest.example.com
tc0001 tomcat7.5 www.example.com
https://raku.org