2013-02-22 28 views
5

Bir metin dosyasını değiştirmeye ve ASCII olmayan karakterleri metinden kaldırmaya çalışıyorum. Çizgiyi kaldırmak istemiyorum. Sadece rahatsız edici karakterleri kaldırmak istiyorum.Yalnızca ASCII olmayan karakterleri silmeye çalışıyorum sadece

sed '/[\x80-\xFF]/d'

+1

Bkz. [This] (http://stackoverflow.com/questions/3337936/remove-non-ascii-characters-from-csv) yanıtı. – speakr

+1

Bu thread aradığınız cevaba sahip olabilir http://stackoverflow.com/questions/8571601/skip-remove-non-ascii-character-with-sed – Ifthikhan

+0

Komutunuz, ascii olmayan karakterler içeren tüm satırları silecektir. İstediğiniz bu değilse, yinelenen soruları kontrol edin –

cevap

33

önerilen çözümler sed, örneğin belirli bir sürümü ile başarısız olabilir: İşe aşağıdaki ifadeyi elde etmek için çalışıyorum GNU sed 4.2.1. tr kullanma

:

tr -cd '[:print:]' < yourfile.txt 

Bu değil [\x20-\x7e] herhangi karakterleri kaldıracaktır.

Örneğin;

tr -cd '[:print:]\n' < yourfile.txt 

gerçekten tüm ASCII karakterlerini (hatta kontrol kodları) tutmak istiyorsanız: Bu değil [\x00-\x7f] herhangi karakterleri kaldırır

tr -cd '[:print:][:cntrl:]' < yourfile.txt 

hat sadece \n ekleyin besler.

+1

Hey speakr ile yapmak istiyorum, metin dosyasının formatını korumak için bir yol var mı. Tr komutu her şeyi kesintisiz bir çizgide besler mi? –

+1

@bosra: Satır feed'lerini korumak için bir örnek ekledim. – speakr

+0

Adam, eğer bunu birkaç kez daha yapabilirsem ... –

İlgili konular