我正在尝试使用带有正则表达式的grep提取字符串的一部分。我已经使用regexr测试了正则表达式,并且可以正常工作。我在macOS上。
这是我的代码:
echo -e '"HI":"Hola!"' | grep -o '(?=[^\"]).+?(?=":")'
如果我尝试使用-P
选项,它将显示grep的用法说明:
usage: grep [-abcDEFGHhIiJLlmnOoqRSsUVvwxZ] [-A num] [-B num] [-C[num]]
[-e pattern] [-f file] [--binary-files=value] [--color=when]
[--context[=num]] [--directories=action] [--label] [--line-buffered]
[--null] [pattern] [file ...]
我想获得HI
作为输出。我需要传送grep
输出还是缺少其他内容?
谢谢
答案 0 :(得分:1)
答案 1 :(得分:0)
如果您没有grep
的Perl兼容版本,请尝试sed
-
$: echo -e '"HI:"Hola!""' | sed -En '/".*?:"/ { s/.*"(.*?):".*/\1/; p; }'
HI
这抓取了"
和:"
之间的所有事物的第一次出现。如果不正确,请说明您的参数。
此外,您可以只使用perl
。 :)