regex - grep 两个分隔符之间的子字符串

标签 regex bash perl grep busybox

我有很多 bash 脚本在 grep 中使用 perl 表达式来提取两个分隔符之间的子字符串。示例:

echo BeginMiddleEnd | grep -oP '(?<=Begin).*(?=End)'

问题是,当我将这些脚本移植到运行 busybox 的平台时,“集成”grep 无法识别 -P 开关。有没有一种使用 grep正则表达式 来做到这一点的简洁方法?

编辑: 该平台上没有 perlsedawk。它是一个轻量级的 linux

最佳答案

您可以像这样使用带有自定义字段分隔符的 awk 来获得相同的输出:

echo 'BeginMiddleEnd' | awk -F 'Begin|End' '{print $2}'
Middle

关于regex - grep 两个分隔符之间的子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26347404/

相关文章:

c# - 在 C# 中使用 RegEx 解析多种日期格式

regex - 如何在 Perl 中反转正则表达式

mysql - 如何向 Schema 类的 DBIx 搜索方法提供附加参数

mysql - MySQL中select语句中使用Regexp的正确方法

javascript - 如何使用正则表达式 javascript 以通用形式提取值

bash - 这是 bash 脚本的有效 self 更新方法吗?

macos - .bash_profile 中的别名无法正常工作

bash - 错误 : Tar command not found

Perl 在 void 上下文中对私有(private)变量的无用使用

regex - 正则表达式,用于从逗号分隔列表中删除方括号中的后缀