ฉันได้รับไฟล์. 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 จริงๆแล้วมันทำให้ปัญหาแย่ลงเพราะตอนนี้พวกเขาดูเหมือน null bytes แทน 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) เพื่อให้เครื่องมือปกติทำงานได้อย่างไร