如何解决grep 由“-”分隔的字符串中的第三个关键字
在linux中显示hostname
命令后,我的主机名详细信息如下
my-host-test-db-10001.dns.biz.xyz.com
my-host-test2-db-10002.dns.biz.xyz.com
my-host-test3-db-10003.dns.biz.xyz.com
我想从上面的 (test/test2/test3) 中获取第三个字符串。我怎样才能实现它?
解决方法
除了使用 with `project.dataset.table` as (
select '{"fruit":[{"apples":"5","oranges":"10"},{"apples":"5","oranges":"4"}]}' json union all
select '{"fruit":{"apples":"1","oranges":"15"}}' union all
select '{"fruit":{"apples":"5","oranges":"1"}}' union all
select '{"fruit":[{"lettuce":"7","kale": "8"}]}'
)
的更简单的解决方案外,您还可以使用更灵活的 cut
:
grep
例如:
hostname | grep -Po '^[^-]+-[^-]+-\K[^-]+'
输出:
grep -Po '^[^-]+-[^-]+-\K[^-]+' <<< 'my-host-test2-db-10002.dns.biz.xyz.com'
此处,GNU grep
使用以下选项:test2
:使用 Perl 正则表达式。-P
:仅打印匹配项(每行 1 个匹配项),而不是整行。
-o
:使正则表达式引擎“保留”它在 \K
之前匹配的所有内容,而不将其包含在匹配中。具体来说,在打印匹配时忽略正则表达式的前面部分。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。