Grep ile bir boşluk karakteri nasıl eklenir?


17

Example adında bir dosyam var

$ cat example

kali.pdf
linux.pdf
ubuntu.pdf
example.pdf.
this.pdf
grep .pdf

ve grepdaha önce bir alanı olan çizgiyi almak için kullandığımda .pdf, bunu elde edemiyorum.

grep *.pdf example

hiçbir şey döndürmez, ("grep, önce sıfır veya daha fazla boşlukla eşleş" demek istiyorum .pdf, ama sonuç yok)

ve eğer kullanırsam:

grep i*.pdf example

kali.pdf
linux.pdf
ubuntu.pdf
example.pdf.
this.pdf
grep .pdf

tüm satırlar geri dönüyor, çünkü "grep, benimle ibir veya sıfır kez eşleştir , tamam" diyorum .

ve son olarak:

grep " *.pdf" example

sonuç döndürülmez

Bu örnek için görmek istiyorum

grep .pdf 

çıktı olarak

Düşüncemde yanlış olan ne?

Yanıtlar:


31

İfadenizi alıntıladığınızdan emin olun. Bence kabuk kelime dağıtımı buradaki problemlerinizden biri, ama her zaman her türlü şey ters gidecek, çünkü her türlü şey yanlıştır.

$ grep ' \.pdf' example
grep .pdf

Veya birden fazla boşluk varsa ( *bu, önceki boşlukların olmadığı durumlarla eşleşeceğinden kullanamayız )

grep ' \+\.pdf' example

+"önceki karakterden biri veya daha fazlası" anlamına gelir. BRE'de \bu özel işlevi almak için ondan kaçmanız gerekir , ancak bunu önlemek için ERE'yi kullanabilirsiniz.

grep -E ' +\.pdf' example 

Ayrıca kullanabilirsiniz \siçinde grepbir boşluk anlamına

grep '\s\+\.pdf' example

Kelimeden tam anlamıyla kaçmalıyız .çünkü regex'te .bir karakter sınıfında olmadığı sürece herhangi bir karakter anlamına gelir.


Son satırda yer olduğunu fark eden ilk sizdiniz.
Pilot6

@ Pilot6 teşekkürler. Soru biraz kafa karıştırıcı yazılmıştır :)
Zanna

Soruyu anlayan ilk kişi için bazı rozet olmalıdır ;-)
Pilot6

@Zanna, bu durumlarda egrep her zaman gitmek yanlış bir şey var mı? egrep her zaman size avantaj sağlar ...
solfish

@solfish egrep(afaik, regex tarzı açısından) ile aynıdır grep -E, ve ben inanıyorum biz ikinci kullanmak içindir - egrepsözde lehine artık kullanılmamaktadır vb grepbireyin bayrakları
Zanna
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.