2012-02-13 10 views
10

kullanarak başka bir dosyaya yapıştırın/yapıştırmadan başarılı bir şekilde çözmeye çalışıyorum. Bir .txt dosyasının bir kısmını n satırından n + n satırına kopyalamam gerekiyor (1000'den 1000000'e diyelim). Bu dosya çok büyüktür, bu yüzden el ile yapamam, bu yüzden terminali başarıya ulaşmak için kullanmaya çalışıyorum. Şu anda, başarı olmadan operatörler ve sed ile çalıştı. İşte denedim ne kopyası:Bir dosyanın bir kısmını, Terminal (veya Shell)

Herhangi bir yardım gerçekten takdir

"1000, 1000000p" yol/ilk/dosya> yol/saniye/dosyaya -n sed

;)

+1

; hangi şekilde başarısız olur? –

+0

Giriş dosyasında yanlış satır sonları varsa, önce bunları dönüştürmeniz gerekir. Dos2unix'i deneyin. – tripleee

cevap

19

Kaynak dosyanızda (wc -l) kaç tane satır olduğunu biliyorsanız, bunu yapabilirsiniz .. 12000 satır varsa ve 2000 - 7000 satırlarını yeni dosyanızda (toplam 5000 satır) istiyorsunuz.

kedi myfile | kuyruk -10000 | head -5000> newfile

Son 10k satırlarını okuyun, ardından ilk 5k satırlarını okuyun.

+0

Dosyada kaç satır olduğunu bilmenize gerek yok: sadece önce kafayı yerleştirin. – jfg956

+0

Ve önce kuyruğu koymak isterseniz, 'tail -n + 2000' kullanabilirsiniz. Bu da daha az tampon alan gerektirir. – jfg956

+1

Bling, Yararsız Kullanım Kedisi. Ayrıca, orijinal 'sed' komutu bunun için iyi oldu. – tripleee

1

Aslında sizin sed komutu sadece tek tırnak çift tırnak yerine çalışmalıdır

Eğer örnekte vermek sed komutuyla yanlış bir şey yok