2013-06-05 7 views
5

ファイルから行x(例えば10)をy(例えば15)にするために使用できるunixシェルコマンドは何ですか? grepは役に立たないようですが、forループを行う以外は何も考えることができません。シェル:ファイルの行x〜yを取得する

+0

可能な重複の: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

はい!非常に重複して、申し訳ありません! KingsIndianの解決策は簡単に見つかりませんが。 – navige

答えて

20

あなたがsedを使用することができます。

sed -n '5,10p' filename 

5から10

+0

ありがとう!完璧に動作します! – navige

2

に線を印刷するには、例えば、headtailを使用することができ

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

良い解決策、あまりにも! – navige

5

ヘッドY、テールY-X

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

良い解決策、あまりにも! – navige

4

AWK:

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

Perlの下記試験

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

大きなファイルの場合

> 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ソリューションが大好きです、ありがとう!あまりにも悪い私はperlを学んだことはありません、よく見える。 – navige

3

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

説明してください。 – navige

+0

!dは10から15の間でないすべての行を削除します。15qは、最後の行まで処理する代わりに15行目で処理を終了させます。 –

関連する問題