แก้ปัญหาบันทึกไฟล์แบบเท็กซ์ ตอนค้นหาดันบอกว่าเป็นไบนารีไฟล์

เซียนลินุกซ์ต้องอ่านครับ บันทึกล็อกไฟล์ข้อมูลแบบเท็กไฟล์จากอุปกรณ์gps ติดตามรถอยู่ดี ๆ ดันฟ้องพบข้อผิดพลาดไม่สามารถค้นหาได้เพราะข้อมูลเป็นแบบไบนารี่ไฟล์ พระเจ้าช่วย เป็นไปได้ยังไง ปัญหาก็กำลังตามแก้แต่ดันใช้เครื่องมือไม่คล่องอีก งานนี้ไปกันใหญ่ ดูตัวอย่างข้อผิดพลาดที่พบ

# grep 1211105815 ywt6035.log
Binary file ywt6035.log matches

ผู้เขียนเคยพบเจอปัญหานี้อยู่หลายครั้งก็ไม่รู้ว่าจะแก้ไขยังไง สุดท้ายก็โยนไฟล์นั้นทิ้งไป เพราะไม่รู้จักไฟล์ประเภทไบนารี แต่ในครั้งนี้มีความจำเป็นต้องนำไฟล์นี้อ่านให้รู้เรื่องให้ได้เพราะว่าอุปกรณ์ gps ติดตามรถ ไม่สามารถระบุตำแหน่งได้อย่างถูกต้อง ทางโรงงานต้องการข้อมูลจากอุปกรณ์ว่าส่งอะไรมาบ้างเพื่อนำไปวิเคราะห์ปัญหาจึงเป็นที่มาของการแก้ปัญหาบันทึกไฟล์แบบเท็กซ์ ตอนค้นหาดันบอกว่าเป็นไบนารีไฟล์







จากการค้นหาในเน็ตพบว่ามีการค้นพบวิธีแก้ไขปัญหานี้ไว้แล้ว โดยพบว่ามีตัวอักขระ NULL ปนอยู่ในไฟล์หลาย ๆที่ ทำให้เครื่องมือในการค้นหารายงานว่าเป็นไฟล์ประเภทไบนารี วิธีแก้ปัญหาก็ทำได้โดยใช้คำสั่ง cat ตามตัวอย่าง เพียงง่าย ๆ แค่นี้ไฟล์ประเภทไบนารีก็ไม่ใช่ปัญหาอีกต่อไป

cat filename | tr -d '\000'| grep keyword

 
# cat ywt6035.log | tr -d '\000' | grep 1211105815 | grep RP
21-02-2017, 13:50:43 - %RP,1211105815:1,170221064206,E100.559357,N13.817723,,0,0,0,0,10-00-00-08-00-00-00-00,,064f-13fc-52099,3>1267.670-305682,7>-65535,19>25
21-02-2017, 13:50:44 - %RP,1211105815:1,170221064306,E100.559357,N13.817723,,0,0,0,0,10-00-00-08-00-00-00-00,,064f-13fa-52099,3>1267.670-305742,7>-65535,19>25
21-02-2017, 13:50:45 - %RP,1211105815:1,170221064406,E100.559357,N13.817723,,0,0,0,0,10-00-00-08-00-00-00-00,,064f-05ad-52099,3>1267.670-305803,7>-65535,19>25
21-02-2017, 13:50:46 - %RP,1211105815:1,170221064520,E100.559357,N13.817723,,0,0,0,0,10-00-00-08-00-00-00-00,,064f-13fa-52099,3>1267.670-305877,7>-65535,19>25

Previous
Next Post »