Belirli bir aralıktaki satır uzunluğu * için değil * nasıl grep?


17

NOT: Bu soru bu S & C'nin tamamlayıcısıdır: Belirli bir aralıktaki satır uzunluğu için "grep" nasıl yapılır?


8'den az veya 63'ten fazla karakter içeren, sekizden fazla ve 63 karakterden az olmayan satırlar için nasıl grep olabiliriz?

Yani, bazı kabul edilebilir karakter sayıları ...

7 6 5 4 3 2 1 0

...ve...

64 65 66 67 ...

3
Sana sormak biliyorum grepama düşünebilir awksen (çok esnek ve vb bundan başka işleme gerek, özellikle okunabilir ): awk '( length($0)<8 ) || ( length($0)>63 )' Bir durumun #default eylem koşulunu eşleşen çizgi (ler) yazdırmaktır. Veya, 0 $ 'dan daha az işlem yaparak:awk '{ l=length($0) ; if (( l<8 ) || l>63 ) { print $0 ;} }'
Olivier Dulac

@mikeserv - evet buna tekrar bakmak muhtemelen bu soru-cevap birimine diğeri dup olarak kapatmak daha mantıklı.
slm

@mikeserv - bu genellikle bir acıdır, cevapları Q'lardan birine birleştirmem gerekir ve daha sonra orijinalden silinir. Bunu yapmak için rehberlik şu şekildedir: "Sorular% 99 özdeş olduklarında birleştirilmelidir ve birden fazla yinelenen sorudaki tüm cevapların tek bir yerde bulunması yararlı olacaktır. Bu, cevapları siler, hedef soruya taşır ve ayrılır mevcut soruyu, birleştirme hedefine bağlantısı olan bir saplama olarak. "
slm

yorumuma ne oldu?
Dmitry Grigoryev

@DmitryGrigoryev - sanırım biri beğenmedi. orada olandan al - unut gitsin.
mikeserv

Yanıtlar:


38
grep -xv '.\{8,63\}' <input >output

grep's -xanahtarı bir tam çizgi eşleşmesini gösterir - yani eşleşen herhangi bir desen baştan aşağı bir çizgi tanımlamalıdır. yapıyor ...

grep -x pattern

... genellikle ...

grep ^pattern$

grep's -vanahtarı, bir desenin satır seçimi üzerindeki etkisini reddeder. genellikle ...

grep pattern

... sadece kalıpla eşleşen satırları seçecektir, ancak bir ile -vreddedildiği desen yalnızca bu satırları yok eşleşecek seçilir.

...ve bu yüzden...

grep -xv '.\{8,63\}'

... 8 ile 63 karakter arasında herhangi bir yerden başlayarak kuyruğa kadar olan tüm satırlarla eşleşir ve -vreddedilen seçim grepyalnızca diğer her şeyin yazdırılmasına neden olur .

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.