Pythontr

husonet | Tarih: 02.02.2015

Metin dosyaları içinden satır başı karakterlerin silinmesi

Windows / Dos işletim sistemlerinden gelen text tabanlı dosyaların Linux işletim sistemine uyarlanması

Birbirinden farklı işletim sistemleri satır sonlarını belirtmek için farklı karakterler kullanabilir. Unix ve Linux sistemler satır sonunu belirtmek için LF kullanır. Windows /DOS satır sonunu belirtmek için 2 karakter kullanır Carriage Return/Line Feed (CR/LF). MacOS satır sonunu belirtmek için ise sadece CR kullanır.


Günümüzda platform bağımsız geliştirmeler oldukça kendinden bahsettirmektedir esasen bahsedilen yazılım dillerinin editörleride anlatacağımız konudaki bu işleri kendisi otomatik olarak yapmaktadır.


Aşağıda bir metin dosyasının her satırında dönüşüm için gerekli olan karakterleri kaldırmak için çeşitli yolları anlatmaya çalıştık.


dos2unix kurulum apt-get install dos2unix


dos2unix input.txt 
dos2unix: converting file input.txt to UNIX format ...

Artık kullanıcı çeşitliliği artmış durumdadır. Bir çok kişi farklı platformlarda çalışabilir örneğin Mac kullanıcıları, Linux kullanıcıları ve Windows kullanıcılarının varlıkları ve dosya alışverişleri oldukça tahminlerden daha fazla olduğu düşünülmektedir.


Diğer bir seçeneğimizde fromdos
fromdos kurulum apt-get install tofrodos


fromdos çalıştırılması
fromdos input.txt 

Not: fromdos komutu owerwrite yapar.


tr seçeneği ile dosyanın uyarlanması
tr -d '
' < input.txt > output.txt


  • satır kontrol edilecek karakterdir
  • -d parametresi delete kısaltması olarak işaret edilen karakterin silinmesini sağlar

sed seçeneği ile dosyanın uyarlanması
sed -i.bak -e 's/
//g' input.txt

Burada sed komutunun tr komutundan tek avantajı in-line olarak yapmasıdır yani aracı dosya oluşturmaya gerek yoktur.


i.bak input.txt.bak gibi, orijinal dosya adına .bak eki ekleyerek bir yedekleme dosyası oluturur.


perl seçeneği ile dosyanın uyarlanması
perl -i.bak -pe 's/
//g' input.txt

Yaptığımız ve birden fazla bir çeşitlilikte oluşturduğumuz örnekler işinizi görecektir.