Mac OS X'te çok satırlı normal ifade araması yapabilen bir komut var mı?


12

Tek satırlarla sınırlı olmayan bir dizin üzerinden özyinelemeli basit bir regex arama yapmak istiyorum.

Grep ve ack'i denedim, ama ikisi de bunu desteklemiyor gibi görünüyor.

Seçme metin düzenleyicim ( Yüce Metin ) benim için çok hesaplama pahalı olmamalı biliyorum (benim durumumda) sadece iyi yapabilir.

Ben sadece bunun basit bir komut satırı sürümünü arıyorum. Google pcregrep'i açtı , ancak Mac için bulamıyorum. Sadece doğru yere bakmıyor muyum?


1
Aradığınız şeye bir örnek vermek yardımcı olacaktır. Ve gelmez grepsen (istediğini bulmak bağlam yardımı ile -C1)?
mbb

Yanıtlar:


15

Homebrew'u yükleyin ve ardından:

brew install pcre

Bu size en son pcregrep


1

Tam olarak ne aradığınızı söylemediniz, bu nedenle dosyanın 112'yi ve ardından 223'ü içerip içermediğini bulma, yeni satırları göz ardı etme görevini hayal edeceğim.

Biraz tutarlı bir awkçözüm:

awk -vRS='' '/112.*223/ { print "found it"; exit }' file.in

RSDeğişken kayıt ayırıcı içerir. Boş dizeye ayarlandığında, tüm dosya tek bir kayıt olarak okunur.

Bu muhtemelen büyük dosyalarda çok fazla bellek verimsiz olacaktır.

Bu arada, bunu OpenBSD'de yapıyorum, ancak OS X awk aynı şekilde çalışmalıdır.


OS X 10.11.2 kullanıyorum ve "awk: invalid -v option" olsun
HaggleLad

OS X'te vve arasında bir boşluk gerekir RS. ieawk -v RS='' '/112.*223/ { print "found it"; exit }' file.in
Neil

0

"pcregrep" daha eski bir kararlı pcregrepve daha yeni olanı ifade edebilir pcre2grep. Her ikisi de adresindeki PCRE projesipcre.org tarafından sağlanmaktadır .

Mac Bağlantı Noktaları ilkini bağlantı noktasının bir parçası olarak pcre(8.40 sürümünde kararlı) ve sonuncusu da bağlantı noktasının bir parçası olarak sunar pcre2(şu anda sürüm 10.22). Yükleme yöntemi:

% sudo port install pcre2
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.