Birden çok metin dosyasını tek bir dosyada birleştirin


10

prBirden çok metin dosyasını tek bir metin dosyasına birleştirmek için unix komutunu kullanıyorum :

pr -F *files > newfile

Her dosya farklı bir uzunluk, farklı sayıda satırdır. Çoğunlukla sonuçtan memnunum, orijinal metin dosyasının adını ve ardından bu dosyanın içeriğini içermesini seviyorum. Ancak, orijinal metin dosyasının adı ve içeriği arasındaki boş satırları kaldırmak istiyorum. Her birini ayırmak için yalnızca farklı metin dosyaları arasındaki boş satırları istiyorum. Ayrıca, ^Lher metin dosyasının içeriğinden sonra karakteri yazdırır ve ben bu karakteri ortadan kaldırmak istiyorum.

Okunan her dosyaya bir 'sayfa' numarası da verilir. Yalnızca bir dosya varsayılan 66 satırdan daha uzun. bu dosya 2 'sayfaya' tükürülür ve boş satırlara bölünmüş 2 bölüme ayrılır. Bu metni bölünmeden sürekli olarak yazmak mümkün müdür?

Herhangi bir yardım için teşekkürler!

Yanıtlar:


9

AWK yardımcı programını kullanabilirsiniz:

awk 'FNR==1{print ""}{print}' *files > newfile

Kaynak: /programming/1653063/how-do-i-include-a-blank-line-between-files-im-concatenating-with-cat


öneri için teşekkür ederim. ancak, -T tanınmıyor. önemli olursa mac os x üzerinde çalışıyorum.
janet

ne yazık ki, -t kediyle aynı dosya türünü oluşturur, okunan metin dosyaları arasında bir kesinti olmaz.
janet

teşekkür ederim Radu. bana istediğimi getiriyor! özür dilerim, şimdi konu dışı olduğumla ilgili bildirimi gördüğüm için yanlış yere gönderiyorum. Yardımın için teşekkür ederim!
Janet

12

Dosyalar arasında boş satırlara sahip olmak için:

cat file1 newline file2 newline file3 > newfile

'Newline' boş satırlı bir dosyadır.


Dosyanın nasıl yapıldığını açıklayabilir misiniz newline? Bazı metin edtiors'ları otomatik olarak son satıra bir satır sonu karakteri ekler, bazıları bunu yapmaz, bu nedenle bazı insanlar bu dosyayı düzgün bir şekilde yapmada sorun yaşayabilir. Bunu başka bir deyişle, sıfır uzunlukta bir dosyada sıfır satır mı yoksa bir satır mı var?
Eliah Kagan

vim newline vim: wq Bu kadar.
Darius Žitkevičius

Gördüğüm sürece, "cat" her dosya arasına otomatik olarak yeni bir çizgi koyar.
myuce

1
for file in *.txt; do (cat "${file}"; echo) >> concatenated.txt; done

Yukarıdakiler, eacb txt dosyasının içeriğini concatenated.txt dosyasına ekleyecek ve aralarına yeni bir satır ekleyecektir.


0

catDosya metnini aşağıdakilerle tek bir dosyaya dökmek için kullanabilirsiniz :

cat file1 file2 file3 > newfile

2
Maalesef catdiğer şartların hiçbirini karşılamıyor.
Ignacio Vazquez-Abrams

1
Evet teşekkür ederim. ancak cat sadece orijinal metin dosyası adı olmadan her dosyanın içeriğini listeler ve aynı zamanda aralarında hiçbir kesinti olmadan her dosyanın içeriğini birbiri ardına listeler. i yeni bir büyük dosyada her metin dosyasının içeriği arasında en az 1 boş satır gerekir.
janet
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.