Ubuntu'da "1" ile başlayan grep lines


46

Kullanarak "1" ile başlayan satırları aramaya çalışıyorum.

ls -1 | grep ^1*

ancak 1 ile başlamayan satırları döndürür. Burada neyi özlüyorum?


Başka bir not: lsÇıktıyı sınırlamak için grep kullanmak istiyorsanız, dosya isimleri yeni satırlar gibi bazı garip karakterler içeriyorsa sorun yaşarsınız ... Diğer birçok komut (bir şekilde değil ls, en azından kontrol etmem gereken versiyon) null ayrılmış çıktısı vermek için bir seçeneğiniz var, bu sayede güvenle işlem yapabilirsinizgrep -z
Gert van den Berg

Teşekkürler, @GertvandenBerg! Yeni satırlar gibi bazı garip karakterlerin grep yapmasına neden olan problemler nelerdir? Hangi komutlar boş çıktı verir?
Tim

1
-print0 ile bulun, çoğu GNU aracında bir -0 veya -z seçeneği bulunur. (sıralama, xargs vb.) Dosya adları yeni satırlar içeriyorsa, iki satırın yeni satır içeren bir dosya adı mı yoksa iki ayrı dosya adı mı olduğunu bilmek mümkün olmaz.
Gert van den Berg,

Yanıtlar:


67

Düzenli ifadeniz, düşündüğünüz şey anlamına gelmez. (^) İle başlayan tüm satırları (1), sıfır veya daha fazla (*) kez tekrarlanan şekilde eşleştirir. Tüm dizeler bu normal ifadeyle eşleşir. grep '^1'ne istiyorsan onu yap.


33

Aşağıdakileri denedin mi?

 ls -1 | grep "^1"

Başka bir deyişle, ifadenin sıfır veya daha fazla öğesini bulduğu *temelde söyleyenleri kaldırın . Başka bir deyişle: 1 ile başlayan veya değil, satırlarla eşleşin.grep^1


13

Bu, sorunuzu yanıtlamamasına rağmen, bu, amacınız için görünenlere daha iyi bir çözümdür:

ls -ld 1*

Başlatan tüm dosyaları listelemek için bir kabuk küre kullanabilirsiniz 1. *Kabuk işlemede normal ifadelerden farklı bir anlamı olduğunu unutmayın .


Teşekkürler! +1. * Kabuk küremede ve düzenli ifadelerde nasıl bir anlam ifade eder?
Tim

2
Bir kabukta glob * , "0 veya daha fazla karakterden herhangi biri" anlamına gelen bir joker karakterdir. Regex anlamı otokan'ın cevabında açıklanmıştır.
Ürdün

3

^ 1. * tüm satırla eşleşir veya yukarıda belirtildiği gibi, ^ 1 satırda bulunan dizeyi alır.

farklı regex stilleri karakterleri temsil eden farklı semboller kullanır, bazı seçenekler istediğiniz stili belirtir. ve farklı seçenekler, tüm satırın mı yoksa sadece bir kısmının mı yoksa tüm girişin tek bir dize olarak mı eşleşmesini istediğinizi belirtir.

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.