Làm cách nào để xác định các ký tự không phải ASCII từ trình bao?


12

Có một cách đơn giản để in tất cả các ký tự ASCII và số dòng trên mà chúng xuất hiện trong một tập tin bằng cách sử dụng tiện ích dòng lệnh như grep, awk, perl, vv?

Tôi muốn thay đổi mã hóa tệp văn bản từ UTF-8 sang ASCII, nhưng trước khi thực hiện, muốn thay thế thủ công tất cả các phiên bản của các ký tự không phải ASCII để tránh các thay đổi ký tự không mong muốn được thực hiện bởi thói quen chuyển đổi tệp.

Câu trả lời:


13
$ perl -ne 'print "$. $_" if m/[\x80-\xFF]/'  utf8.txt
2 Pour être ou ne pas être
4 Byť či nebyť
5 是或不

hoặc là

$ grep -n -P '[\x80-\xFF]' utf8.txt
2:Pour être ou ne pas être
4:Byť či nebyť
5:是或不

trong đó utf8.txt

$ cat utf8.txt
To be or not to be.
Pour être ou ne pas être
Om of niet zijn
Byť či nebyť
是或不

1
Cảm ơn. Đoạn mã perl hoạt động trực tiếp, nhưng phiên bản grep không hoạt động với GNU grep 2.16. Tôi đã có thể làm cho nó hoạt động thông qua : LC_ALL=C grep -n -P [$'\x80'-$'\xFF'], nơi bit đầu tiên tắt đối chiếu.
Joe Corneli

4

Tôi muốn thay đổi mã hóa tệp văn bản từ UTF-8 sang ASCII ...

... thay thế tất cả các trường hợp ký tự không phải ASCII ...

Sau đó nói với công cụ chuyển đổi của bạn để làm như vậy.

$ iconv -c -f UTF-8 -t ASCII <<< 'Look at 私.'
Look at .

$ iconv -c -f UTF-8 -t ASCII//translit <<< 'áēìöų'
aeiou

Ông nói rằng ông muốn làm điều đó thay thế bằng tay. Có lẽ sự thay thế thích hợp nhất là phụ thuộc vào ngữ cảnh.
mark4o
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.