her iki tarafta iki nokta üst üste bulunan herhangi bir uzunlukta alfasayısal dizeler için grep


14

Her iki tarafta bir iki nokta üst üste işaretiyle 1 ila 50 karakterlik (ideal olarak herhangi bir uzunluk da işe yarayacak) alfasayısal dizeler için nasıl grep istiyorsunuz - tipik bir sonuç, dizeyi içeren tüm satırlar olacaktır :shopping:. Şimdiye kadar işe yaramaz aşağıdaki kod var (üzerinde bazı varyasyonları denedim):

grep ':[[:alnum:]]{1,100}:' ~/x.txt

Sadece anahtarı grepdahil ederek genişletilmiş normal ifade özelliklerini etkinleştirmeniz gerekir -E.
slm

Yanıtlar:


13

Bunun için genişletilmiş düzenli ifadeleri etkinleştirmeniz gerekir:

grep -E ':[[:alnum:]]+:' ~/x.txt

4

Temel düzenli ifadelerle şöyle yazabilirsiniz:

grep ':[[:alnum:]]\{1,100\}:' ~/x.txt

Not \{(karşıt olarak \+ya da \?örneğin), standart ve taşınabilir ve aslında BRE benzerleri +ve ?tipik olarak yazılır \{: \{1,\}ve \{0,1\}. grep -Eolsa da standart ve taşınabilir, bu nedenle bu durumlarda daha okunabilir regexps için yaptığı gibi kullanabilirsiniz.


1

-E seçeneğini kullanmanız için genişletilmiş düzenli bir ifade kullanıyorsunuz:

grep -E ':[[:alnum:]]{1,100}:' ~/x.txt

Teşekkürler! Diğer cevabı doğru olarak koydum, çünkü başlığa "ideal" senaryomu yazmadım ve bir cevap için google olan kişilerin yanlış cevabı yapıştırmasına neden olmak istemiyorum, ama sizinkini kullanacağım. :)

1
@TorThommesen - doğru değilse Q'nuzun başlığını düzenleyebilirsiniz.
slm

0

Hiç kimse bundan bahsetmediği için, egrepanladığım kadarıyla eşdeğer olanı da kullanabilirsiniz grep -E.

egrep ':[[:alnum:]]{1,100}:' ~/x.txt

1
egrepERE'lerle grep için tarihi komuta idi. Grep ve egrep'in işlevselliği o zamandan beri (uzun zaman önce) -E seçeneğiyle grep'e birleştirildi. egrepartık kullanılmıyor / kullanımdan kaldırılıyor (ancak bazı insanlar buna alıştığı için gitmesi pek mümkün değil).
Stéphane Chazelas
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.