是否可以从 Bash 脚本调用诸如 Perl 之类的程序来执行具有命名捕获组的正则表达式并将结果作为变量导出回父 shell?
例如:
#!/bin/bash
input="a small box"
regex="a (?P<size>\w+) box"
perl -e "
my \$str = \"$input\";
if ( \$str =~ /$regex/ ) {
# Do a thing...
}
"
# Illustrative purposes only
echo $size
预期的输出将是small
。
这不必专门用 Perl 来完成。我只是想知道这是否可以完成和演示。
我有几千个文件要解析,需要构建一个非常大且复杂的正则表达式来处理它们的内容。虽然这可以通过其他工具来完成,例如pcregrep
或=~
使用编号的捕获组,但为了清楚起见,我更喜欢使用命名的捕获组。
除了这个复杂的正则表达式的繁重工作之外,我觉得我不需要使用 Bash 以外的任何东西。有没有办法轻松地使用另一种语言来利用命名捕获组并将结果导出回父环境?