【发布时间】:2021-05-16 06:29:20
【问题描述】:
我需要在 shell 脚本中捕获命名组,类似于我们在 python 中的设置,如下所示:
(?P<year>.*)~(?P<name>.*)
1983~Harman
它确实捕获了 1983 年并命名为 Harman。 我阅读了有关使用 sed 和 awk 命令捕获组而不是命名组的信息,但我正在寻找 shell 脚本中的命名组捕获,任何线索将不胜感激。
【问题讨论】:
-
Perl、Ruby、Python 等中的正则表达式库支持命名捕获组。
-
@WiktorStribiżew,我们在 shell 脚本中没有这样的规定吗?或者您是否介意建议在 shell 脚本中捕获命名组的任何替代方法。
-
POSIX 正则表达式不支持命名捕获组。
-
捕获未命名的组?我看不出命名组不仅仅是一种方便。
[[ "1983~Harman" =~ (.*)~(.*) ]]; 1983 和 Harmon 将分别是BASH_REMATCH数组的索引 1 和 2。
标签: regex bash shell scripting