02 October 2008

การ convert Text File ระหว่าง Windows และ UNIX

โดยปกติแล้ว Text File ที่สร้างขึ้นจาก Windows และ Unix จะมีความแตกต่างกันในเรื่องการการขึ้นบรรทัดใหม่ กล่าวคือ Text File ใน Windows นั้นเมื่อมีการขึ้นบรรทัดใหม่จะมีการแถมคีย์ Enter ใส่เข้าไปให้เราด้วย แต่บน Unix จะไม่มีการแถมคีย์ดังกล่าว การแถมคีย์นี้เลยทำให้เกิดตัวอักษร ^M เมื่อเรานำ Text File ที่สร้างจาก Windows มาเปิดบน Unix ก็จะมี ^M ต่อท้ายทุก ๆ บรรทัด (เป็นของแถมที่เราไม่อยากได้ครับ)
จะทำอย่างไรเมื่อเกิดปัญหาขึ้นแล้ว?
การแก้ไขปัญหานั้นสามารถทำได้หลายวิธีการด้วยกันครับ

1. หากเรามีการใช้โปรแกรม FTP ในการส่งไฟล์ขึ้น Unix เราควรมีการระบุประเภทของไฟล์ก่อนเริ่ม Transfer ให้เป็น ascii ก่อน put เพื่อเป็นการบอกให้รู้ว่าไฟล์ที่กำลังจะส่งไปนี้เป็น Text File หรือ ASCII file นะ
ตัวอย่างจาก Windows

ftp 192.168.1.1
(กรอก user และ password)
ascii
put a.txt
bye
2. การใช้คำสั่ง dos2unix และ unix2dos ซึ่งมีอยู่บนบาง OS เท่านั้น เช่น Solaris และ Redhat
การแปลงไฟล์จาก windows ขึ้นไปบน unix จะใช้คำสั่ง
dos2unix winfile.txt unixfile.txt
การแปลงไฟล์จาก unix ลงมาใช้กับ windows หรือ dos
unix2dos unixfile.txt winfile.txt

3. การแก้ไขโดยใช้ Editor ที่ชื่อว่า vi
วิธีการครับ
ใช้ vi เปิดไฟล์นั้นเช่น
vi winfile.txt
(เราก็จะเห็นไฟล์นั้นที่มี ^M ต่อท้ายบรรทัด)
กดปุ่ม : แล้วพิมพ์
:1,$s/^M/ /g
เมื่อ ^M สามารถพิมพ์ได้โดยการกดปุ่ม ctrl + v

1 comment:

Kittisak Boyd said...

ถ้าเป็น HP-UX สามารถใช้คำสั่ง ux2dos และ dos2ux ได้ครับ