regex - 在 Shell 脚本中捕获命名组
问题描述
我需要在 shell 脚本中捕获命名组,类似于我们在 python 中的设置,如下所示:
(?P<year>.*)~(?P<name>.*)
1983~Harman
它确实捕获了 1983 年并命名为 Harman。我阅读了有关使用 sed 和 awk 命令捕获组而不是命名组的信息,但我正在寻找 shell 脚本中的命名组捕获,任何线索将不胜感激。
解决方案
您可以在 shell 脚本中使用 perl 单行:
$ echo "1983~Harman" | perl -pe '/(?<year>.*)~(?<name>.*)/; $_ = "Name: $+{name}, Year: $+{year}\n"'
Name: Harman, Year: 1983
注意,命名捕获组需要 perl 5.10
推荐阅读
- java - 语句的非法开始
- javascript - 如何通过鼠标选择在 Google Sheets App Scripts 中使用无模式对话框选择范围?
- c# - 如何使用 JavaScript 从 .NET Core 3.1 正确调用 HttpPost 方法,避免出现 400 错误
- saml-2.0 - ADFS 持久 ID 映射存储
- image-resizing - 如何根据原始测试图像大小调整预测的蒙版图像大小
- java - 如何使用 Spring Security 做一个 RESTful 登录 API?
- php - 带有输入字段的 Laravel 多个复选框
- arrays - 多个随机大小数组的内存分配
- c++ - C(avr-gcc 是带有类和新/删除的 C)- 不为微控制器上的非实例化类分配内存的最佳方法
- c# - 使用链接方法c#创建新变量时如何在内部类返回之间跳转