grep -P不再工作,我怎么能重写我的search
它看起来像OSX的新版本不再支持grep -P,并因此使我的一些脚本停止工作。
var1=`grep -o -P '(?<=<st:italic>).*(?=</italic>)' file.txt`
我需要捕获到一个variables的grep,我需要使用零宽度断言。 以及\ K
var2=`grep -P -o '(property:)\K.*\d+(?=end)' file.txt`
任何替代品将不胜感激。
如果你想做最less量的工作,改变
grep -o -P 'PATTERN' file.txt
至
perl -nle 'print $& if m{PATTERN}' file.txt
所以你得到:
var1=`perl -nle 'print $& if m{(?<=<st:italic>).*(?=</italic>)}' file.txt` var2=`perl -nle 'print $& if m{(property:)\K.*\d+(?=end)}' file.txt`
但是,您可以通过额外的工作来实现更简单的代码。
var1=`perl -nle 'print $1 if m{<st:italic>(.*)</italic>}' file.txt` var2=`perl -nle 'print $1 if /property:(.*\d+)end/' file.txt`
如果您的脚本仅供您使用,则可以使用brew
从homebrew-core
安装grep
:
brew install grep --with-default-names
当你指定--with-default-names
,它会replace系统的grep
(实际上,把安装的grep放在PATH
上的系统之前)。
brew
安装的版本包含-P
选项,所以不需要更改脚本。
如果你安装时没有--with-default-names
,那么它可以用ggrep
(GNU grep
)。
安装确认并使用它。 Ack是用Perl编写的grep替代品。 它完全支持Perl正则expression式。
use perl;
perl -ne 'print if /regex/' files ...
如果你需要更多的grep
选项(我看你至less会喜欢-o
),有各种各样的pgrep
实现浮在网上,其中许多是Perl。
如果“差不多Perl”足够好,那么PCRE就会附带pcregrep
。
OS X倾向于提供BSD而不是GNU工具。 它确实带有egrep
,但这可能是您执行正则expression式search所需要的全部内容。
例如: egrep 'fo+b?r' foobarbaz.txt
来自OSX grep手册页的一段代码:
grep is used for simple patterns and basic regular expressions (BREs); egrep can handle extended regular expressions (EREs).
还有另一种select: pcregrep
。
Pcregrep是一个Perl兼容的正则expression式的grep。 它和grep -P
具有完全相同的用法。 所以它将与您的脚本兼容。
它可以用自制软件安装:
brew install pcre
这个为我工作:
awk -F":" '/PATTERN/' file.txt
如何使用'-E'选项? 它适用于我,例如,如果我想检查从php -m php_zip
, php_xml
, php_gd2
扩展我使用:
php -m | grep -E '(zip|xml|gd2)'
相当于接受的答案,但没有-P开关的要求,而这两个机器都没有这个要求。
find . -type f -exec perl -nle 'print $& if m{\r\n}' {} ';' -exec perl -pi -e 's/\r\n/\n/g' {} '+'
另一个用于-P的Perl解决scheme
var1=$( perl -ne 'print $1 if m#<st:italic>([^<]+)</st:italic># ' file.txt)
使用perl单线程正则expression式通过传递查找输出与pipe道。 我使用了lookbehind (在html中获取src链接)并向前看 “并将curl(html)的输出传递给它。
bash-3.2# curl stackoverflow.com | perl -0777 -ne '$a=1;while(m/(?<=src\=\")(.*)(?=\")/g){print "Match #".$a." "."$&\n";$a+=1;}' % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 239k 100 239k 0 0 1911k 0 --:--:-- --:--:-- --:--:-- 1919k Match #1 //ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js Match #2 //cdn.sstatic.net/Js/stub.en.js?v=fb6157e02696 Match #3 https://ssum-sec.casalemedia.com/usermatch?s=183712&cb=https%3A%2F%2Fengine.adzerk.net%2Fudb%2F22%2Fsync%2Fi.gif%3FpartnerId%3D1%26userId%3D Match #4 //i.stack.imgur.com/817gJ.png" height="16" width="18" alt="" class="sponsor-tag-img">elasticsearch</a> <a href="/questions/tagged/elasticsearch-2.0" class="post-tag" title="show questions tagged 'elasticsearch-2.0'" rel="tag">elasticsearch-2.0</a> <a href="/questions/tagged/elasticsearch-dsl" class="post-tag" title="show questions tagged 'elasticsearch-dsl'" rel="tag Match #5 //i.stack.imgur.com/817gJ.png" height="16" width="18" alt="" class="sponsor-tag-img">elasticsearch</a> <a href="/questions/tagged/sharding" class="post-tag" title="show questions tagged 'sharding'" rel="tag">sharding</a> <a href="/questions/tagged/master" class="post-tag" title="show questions tagged 'master'" rel="tag Match #6 //i.stack.imgur.com/tKsDb.png" height="16" width="18" alt="" class="sponsor-tag-img">android</a> <a href="/questions/tagged/linux" class="post-tag" title="show questions tagged 'linux'" rel="tag">linux</a> <a href="/questions/tagged/camera" class="post-tag" title="show questions tagged 'camera'" rel="tag Match #7 //i.stack.imgur.com/tKsDb.png" height="16" width="18" alt="" class="sponsor-tag-img">android</a> <a href="/questions/tagged/firebase" class="post-tag" title="show questions tagged 'firebase'" rel="tag"><img src="//i.stack.imgur.com/5d55j.png" height="16" width="18" alt="" class="sponsor-tag-img">firebase</a> <a href="/questions/tagged/firebase-authentication" class="post-tag" title="show questions tagged 'firebase-authentication'" rel="tag Match #8 //i.stack.imgur.com/tKsDb.png" height="16" width="18" alt="" class="sponsor-tag-img">android</a> <a href="/questions/tagged/ios" class="post-tag" title="show questions tagged 'ios'" rel="tag">ios</a> <a href="/questions/tagged/in-app-purchase" class="post-tag" title="show questions tagged 'in-app-purchase'" rel="tag">in-app-purchase</a> <a href="/questions/tagged/piracy-protection" class="post-tag" title="show questions tagged 'piracy-protection'" rel="tag Match #9 //i.stack.imgur.com/tKsDb.png" height="16" width="18" alt="" class="sponsor-tag-img">android</a> <a href="/questions/tagged/unity3d" class="post-tag" title="show questions tagged 'unity3d'" rel="tag">unity3d</a> <a href="/questions/tagged/vr" class="post-tag" title="show questions tagged 'vr'" rel="tag Match #10 http://pixel.quantserve.com/pixel/p-c1rF4kxgLUzNc.gif" alt="" class="dno bash-3.2# date Mon Oct 24 20:57:11 EDT 2016