2016-03-29 29 views
1

Bir metin dosyası üzerinde aşağıdaki komutu kullanmaya çalışıyorum başarısız oldu:sıralama: string karşılaştırma Geçersiz veya eksik çokbaytlı veya geniş karakter

aşağıdaki hata mesajı alıyorum Ancak
$ sort <m.txt | uniq -c | sort -nr >m.dict 

:

sort: string comparison failed: Invalid or incomplete multibyte or wide character 
sort: Set LC_ALL='C' to work around the problem. 
sort: The strings compared were ‘enwedig\r’ and ‘mwy\r’. 

Windows 7'de Cygwin kullanıyorum ve her sözcüğü yeni bir satırda dosyaya koymak için m.txt dosyasını düzenlemede sorun yaşıyordum. bakınız: Python içinde Galli metin üzerinde çalışmak edildiğinde

Using AWK to place each word in a text file on a new line

bunu ne kadar bu hatalar nedeniyle alıyorum emin değilim, ya da (m.txt Galli alfabesinden karakterler içerdiğinden, Kodlamayı 'Latin-1' olarak değiştirmem gerekiyordu.

Hata mesajının önerilerini takip etmeyi ve LC_ALL = 'C' değiştirmeyi denedim ancak bu yardımcı olmadı. Herkes, aldığım hataların ayrıntılarını açıklayabilir ve bu sorunu çözmeye çalışmakla ilgili olarak tavsiyelerde bulunabilir.

GÜNCELLEME:

dos2unix çalışırken, hatalar belli hatlarda geçersiz karakterler hakkında görüntülenen ediliyordu. Bu Galce karakterleri değil, diğer garip karakterler (oklar vb) değildi çıktı. Dos2unix komutunu hatasız kullanana kadar bu karakterleri kaldırarak metin dosyamdan geçtim. Ancak, dos2unix komutunu kullandıktan sonra tüm metin birleştirildi (boşluk/satırsonu veya herhangi bir şey, dosyadaki her sözcük ayrı bir satırda olmalıydı). Daha sonra unix2dos kullandım ve metin dosyası normale döndü . Her bir kelimeyi kendi satırında nasıl yapabilirim ve '\ r' karakterleri hakkında bana hatalar vermeden sıralama komutunu kullanabilir miyim?

+0

'dos2unix' bir uzun satıra yol açmaz; Sadece Unix satır sonlarını anlamayan Windows araçları. Bir Unix dosyasına bakmak için bir Windows editörü kullanmayın, 'vi 'gibi bir Unix editörü kullanın ve her kelimeyi bir satırda görürsünüz. Ve Windows sıralama programını değil, cygwin sıralama programını kullandığınızdan emin olun. Emin olmak için '/ usr/bin/sort' kullanın. – Jens

+0

Ah görüyorum. Benim problemim hala çözülmedi ama sanırım şimdi asıl sorudan çok uzaklaştı ve ben de bir tane daha yarattım. Şimdi bu soruyu kapatacağım, yardımın için teşekkürler. – hjalpmig

cevap

1

Bir Windows satırı ile ilgili bir sorun gibi görünüyor (\r\n karşı \n). Sen

dos2unix m.txt 

ile Unix satır sonları için m.txt dönüştürmek ve sonra komutu tekrar çalıştırabilirsiniz.

+0

Merhaba, bu ileti "dos2unix: satır 11451024 dos2unix: ikili dosya m.txt" atlayarak ikili dosya 0x1A verir "ve sonra ben aynı hatayı alıyorum özgün komutu deneyin. Herhangi bir fikir? – hjalpmig

+0

@hjalpmig Dosyanın * kodlamasını * biliyor musunuz? Yani UTF-8, Windows kod sayfası X, diğer bazı kodlama nedir? Bu dosya nasıl oluşturuldu? Bir Windows editörüyle açıldığında iyi görünüyor mu? – Jens

+0

Bir metin düzenleyicisinde (Not Defteri) açıldığında iyi görünüyor. Kodlamada tam olarak emin değilim, ama Gal Dili dil karakterleri içerir: â, ê, î, ô, û, ŵ, ŷ. Ben de -2 komutu ile dos2unix denedim ve çalışır, ama aynı hatayı sıralamak çalıştığımda. – hjalpmig

0

Bunun eski bir soru olduğunu biliyorum, ancak sadece export LC_ALL='C' komutunu çalıştırmak, sort: Set LC_ALL='C' to work around the problem. tarafından açıklanan şekilde hile yapacaktır.