echo "A number is about to show up 1 and now I want to parse 365 guys and some extra junk"  | sed -E 's/.*([0-9]+) guys.*/\1/g'

上面的命令目前只输出5。本质上,我想在一个随机的句子中解析“男人”的数量,这个句子可能有数字(或者没有)。。我还想分析一下,在人数之前。我的echo "365 guys"正在匹配.*并防止它出现在36中。如何编写sed命令(或任何其他regex/perl/awk)来完成我想要的任务?

最佳答案

在Perl中使用“frugal”量词*?

perl -pe 's/.*?([0-9]+) guys.*/$1/'

关于bash - 以后寻找特定字符串时,如何克服贪婪匹配的一切?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42498783/

10-13 08:51