Я отримав файл .csv з 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.|
Під час використання awk
для розбору я отримую купу нульових байтів, які, як я підозрюю, пов’язані з порядком байтів. Як я можу поміняти порядок байтів на цей файл (використовуючи CLI), щоб нормальні інструменти працювали з ним?
Зауважте, що я думаю, що цей файл містить лише символи ASCII (крім BOM), але я не можу підтвердити це, оскільки grep
вважає, що це двійковий файл:
$ grep -P '^[\x00-\x7f]' dotan.csv
Binary file dotan.csv matches
Пошук одного і того ж рядка у VIM показує кожну відповідність символів !
Використання iconv
для перетворення в ASCII не позбавляється від значень \ x00, насправді це робить проблему ще гіршою, оскільки тепер вони виглядають як нульові байти замість 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.|
Як я можу поміняти порядок байтів на цей файл (використовуючи CLI), щоб нормальні інструменти працювали з ним?