Tôi đã nhận được tệp .csv với FF FE
BOM:
$ head -n1 dotan.csv | hd
00000000 ff fe 41 00 64 00 20 00 67 00 72 00 6f 00 75 00 |..A.d. .g.r.o.u.|
Khi sử dụng awk
để phân tích cú pháp, tôi nhận được một loạt các byte rỗng, điều mà tôi nghi ngờ là do thứ tự byte. Làm cách nào tôi có thể trao đổi thứ tự byte trên tệp này (sử dụng CLI) để các công cụ bình thường sẽ hoạt động với nó?
Lưu ý rằng tôi nghĩ rằng tệp này chỉ là các ký tự ASCII (ngoại trừ BOM), nhưng tôi không thể xác nhận rằng vì grep
cho rằng đó là tệp nhị phân:
$ grep -P '^[\x00-\x7f]' dotan.csv
Binary file dotan.csv matches
Tìm kiếm cùng một chuỗi trong VIM hiển thị mọi ký tự khớp!
Sử dụng iconv
để chuyển đổi sang ASCII không loại bỏ các giá trị \ x00, thực sự nó làm cho vấn đề trở nên tồi tệ hơn vì bây giờ chúng trông giống như các byte rỗng thay vì UTF-8!
$ iconv -f UTF-8 -t ASCII dotan.csv > fixed.txt
iconv: illegal input sequence at position 0
$ iconv -f UTF-8 -t ASCII//IGNORE dotan.csv > fixed.txt
$ head -n1 fixed.txt | hd
00000000 41 00 64 00 20 00 67 00 72 00 6f 00 75 00 70 00 |A.d. .g.r.o.u.p.|
Làm cách nào tôi có thể trao đổi thứ tự byte trên tệp này (sử dụng CLI) để các công cụ bình thường sẽ hoạt động với nó?