2016-10-19 5 views
1

のは、私が持っているファイルに大きなファイルを分割したいとしましょう - 例えば - その中の50行bashの - スプリットだけ特定の番号を使用

split <file> -d -l 50 prefix 

どのように私はこれが最初nと無視しますか最後にm行が<file>にありますが、

答えて

1

使用headtail

tail -n +N [file] | head -n -M | split -d -l 50 

例(linesは10行、連続番号のそれぞれとテキストファイルである):nmは、開始と終了がある場合

[[email protected] playground]$ tail -n +3 lines | head -n -2 
3 
4 
5 
6 
7 
8 
+0

を提供することにより、それはありませんか? – User1291

+0

いいえ、それは不思議ではありません。 –

1

印刷する行番号、これを行うことができます

sed

sed -n $n,${m}p file 

-nデフォルトではすべての行が印刷されないようにします。 p

+0

私は '$ {m} p'が' $ mp'よりもうまくいくと確信しています – mouviciel

+0

@mouviciel正直な感謝! – oliv

1

あなたが分割されたファイルの上にawkを使用することができますNRは、行の数を表すawk

awk "NR>$n && NR<$m" file 

$n,${m}


で示される範囲と一致する行だけを印刷していますあなたが必要とする一連の行を提供することによって、

awk -v lineStart=2 -v lineEnd=8 'NR>=lineStart && NR<=lineEnd' splitted-file 

など。 3-8の範囲で

$ cat line 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 

awkこれは、分割されたコマンドに接頭辞を渡すことはできません

$ awk -v lineStart=3 -v lineEnd=8 'NR>=lineStart && NR<=lineEnd' file 
3 
4 
5 
6 
7 
8 
関連する問題