在 bash 脚本中执行正则表达式时出现“grep:无效选项 -- P”错误 [已关闭]

问题描述 投票:0回答:1

我正在尝试在 bash 脚本中使用正则表达式来检索“(”和“)”之间的一些文本,我有这个:

echo "device name, ID: (D96F7842-21D8-4E81-BAE6-DCF8EB66C734)" | grep -P '\((.*?)\)' 

在 MacOS 终端中执行此操作后,我得到:

grep:无效选项 -- P 用法:grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A 数字] [-B 数字] [-C[数字]] [-e 模式] [-f 文件] [--binary-files=值] [--color=时间] [--context[=num]] [--directories=action] [--label] [--line-buffered] [--null] [模式] [文件...]

我搜索了这个错误并阅读了this线程,但没有一个解决方案对我有用。有什么想法吗?

谢谢你。

bash macos grep
1个回答
0
投票

在每个 Unix 机器上的任何 shell 中使用任何 sed:

$ echo "device name, ID: (D96F7842-21D8-4E81-BAE6-DCF8EB66C734)" |
    sed 's/.*(\([^)]*\).*/\1/'
D96F7842-21D8-4E81-BAE6-DCF8EB66C734
© www.soinside.com 2019 - 2024. All rights reserved.