Büyük metin dosyasının ilk satırını düzenle


16

Büyük bir metin dosyası var, her şeyin belleğe kaydedilemeyeceği kadar büyük. Bu metin dosyası ile tek yapmam gereken ilk satırı düzenlemek (onun bir CSV dosyası ve başlıkları değiştirmek gerekir).

Bunu bash'da yapmanın basit bir yolu var mı?


Bir metin düzenleyici kullanamamanızın bir nedeni var mı?
dangph

Dosya çok büyük, bu makinedeki maksimum sanal belleğimden 20 kat daha büyük.
lynks

1
yeterince adil. İyi metin editörlerinin çok büyük dosyalarla başa çıkabileceği izlenimi altındaydım, çünkü sadece belleğe ihtiyaç duydukları kadar yüklüyorlar, ancak diğer soruların bazılarını okuduktan sonra çoğu onlarla ilgili problemleri var gibi görünüyor.
dangph

@dangph True ... tuhaf olabilir ama edlinms-dos veya edUnix için olduğu gibi birkaç eski ve eski "metin editörleri" (veya sözde) bu soruna sahip görünmüyordu ama sadece satır editörleri ... RAM'de bu zamanlar kıt ve değerli bir şeydi ve Gigabytes'teki bir dosya boyutu inanmak imkansız bir şeydi! ;)
laurent

Açıklamak için;): Ben kaçırmayın ed!!! ama bu durumda iyi bir uyum olurdu (bu boyuttaki bir dosyayı işleyebileceğinden emin değilim ...)
laurent

Yanıtlar:


22

Neyi lessdüzenlemek istediğinizi görmek sediçin ve değişiklikleri yapmak için kullanabilirsiniz . Bu şekilde tüm dosyayı yüklemeden düzenlersiniz.

Başka bir yol dosyayı bölmek, düzenlemek ve tekrar katılmaktır:

split -b 10000k <file>

and to join:

cat xa* > <file>

sed için oy verin.
atroon

Fantastik, bölünmüş ve katılmak tam olarak aradığım şeydi, teşekkürler.
lynks

emin, sed, tüm dosyayı kolayca arayabileceği / değiştirebileceği için daha iyidir, ancak yalnızca ilk satırı değiştirmesi gerekiyorsa, bölünme de kötü ve hızlı değildir.
laurent

4
sed, tüm dosyanın (yarım TB'ın hemen altında) çalıştırılması saatler sürecekti, değişiklikler sadece ilk satırdaydı, bölmek mantıklı görünüyor.
lynks

3

Değişikliğiniz satırın uzunluğunu değiştirirse, tüm dosyanın yeniden yazılması gerekir, örneğin bu tartışmaya bakın SO hakkındaki . Muhtemelen verileri bir veritabanına kaydetmeyi düşünmelisiniz.

Bunu aklınızda tutarak, dosyayı sed ile düzenleyebilirsiniz. İlk satırı değiştirmek için şöyle bir şey yapın (GNU sed):

< oldfile sed '1c\new_heading' > newfile
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.