2013-06-05 11 views
5

Bir dosyadan satır x (ör. 10) y (ör., 15) almak için hangi unix kabuk komutunu kullanabilirim? grep, yardım için görünmüyor ve başka bir şey düşünemiyorum.Kabuk: satırları x - y satırına getir

+0

Olası yinelenen ait: http://unix.stackexchange.com/questions/47407/cat-line-x-to-line-y-on-a-huge- – h2ooooooo

+0

http://theunixshell.blogspot.com/2013/06/print-range-of-lines-in-perl-based-upon.html – Vijay

+0

Evet! çok fazla yinelenen, üzgünüm! KingsIndian çözümü kolayca bulunamıyor olsa da. – navige

cevap

20

için sed kullanabilir:

sed -n '5,10p' filename 

10.

+0

teşekkürler! Mükemmel çalışıyor! – navige

2

5 ila hatları baskı için head ve tail kullanabilir, örneğin;

head -n 15 $file | tail -n 5 
+0

İyi bir çözüm de! – navige

5

kafa y kuyruk Y-X

head -n 15 filename | tail -n 5 
+0

İyi bir çözüm de! – navige

4

awk:

awk 'NR>=10 and NR<=15' your_file 

Perl:

perl -lne 'print if($.>=10 && $.<=15)' your_file 

aşağıda test:

Daha büyük dosyalar için
> cat temp 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
> nawk 'NR>=10&&NR<=15' temp 
10 
11 
12 
13 
14 
15 
> perl -lne 'print if($.>=10&&$.<=15)' temp 
10 
11 
12 
13 
14 
15 
> 
+0

awk çözümünü çok beğeniyorum, teşekkürler! Çok kötü, perl'i hiç öğrenmedim, iyi görünüyorsun. – navige

3

:

sed '10,15! d;15q' file 
+0

Açıklar mısınız lütfen? – navige

+0

! D 10 ile 15 arasındaki tüm satırları silmez. 15q, son satıra kadar işlem yapmak yerine 15'inci satırda işlenmeyi durdurur. –

İlgili konular