มีคำสั่ง Bash เพื่อแปลง \ r \ n เป็น \ n หรือไม่
เมื่อฉันอัพโหลดสคริปต์ของฉันจาก Windows ไปยัง Linux ฉันต้องใช้ยูทิลิตี้เช่นนี้เพื่อทำให้งานต่างๆ
dos2unix
โปรแกรม Unix / Linux ที่จะทำสิ่งที่คุณต้องการ
มีคำสั่ง Bash เพื่อแปลง \ r \ n เป็น \ n หรือไม่
เมื่อฉันอัพโหลดสคริปต์ของฉันจาก Windows ไปยัง Linux ฉันต้องใช้ยูทิลิตี้เช่นนี้เพื่อทำให้งานต่างๆ
dos2unix
โปรแกรม Unix / Linux ที่จะทำสิ่งที่คุณต้องการ
คำตอบ:
Translate ( tr ) มีให้ใน Unixes ทั้งหมด:
tr -d '\r' # From \r\n line end (DOS/Windows), the \r will be removed so \n line end (Unix) remains.
\r
เช่นกัน แม้ว่าพวกเขาจะผิดปกติอย่างมาก
ด้วย sed และพบว่าลงท้ายด้วย.txt, .php, .js, .css
:
sed -rie 's/\r\n/\n/' \
$(find . -type f -iregex ".*\.\(txt\|php\|js\|css\)")
มียูทิลิตี้ Unix ที่เรียกconv
ว่าสามารถแปลงการสิ้นสุดบรรทัด มันมักจะถูกเรียกด้วย Softlinks ไปu2d
หรือd2u
หรือหรือunix2dos
dos2unix
นอกจากนี้ยังมีสาธารณูปโภคที่เรียกว่าและfromdos
todos
ใช้ man 1 ed (ซึ่งแก้ไขไฟล์ในที่ที่ไม่มีการสำรองข้อมูลก่อนหน้า - ซึ่งแตกต่างจาก: sed .. -i ".bak" ... ):
ed -s file <<< $'H\ng/\r*$/s///\nwq'
การทำสิ่งนี้กับ POSIX นั้นยุ่งยาก:
POSIX Sedไม่สนับสนุนหรือ\r
\15
แม้ว่าจะเป็นเช่นนั้นตัวเลือก in place -i
ไม่ใช่ POSIX
POSIX Awkรองรับ\r
และ\15
อย่างไรก็ตาม-i inplace
ตัวเลือกนี้ไม่ได้เป็น POSIX
d2uและdos2unixไม่ใช่POSIX ยูทิลิตี้แต่อดีตคือ
POSIX อดีตไม่สนับสนุน\r
, \15
, \n
หรือ\12
หากต้องการลบ carriage return:
awk 'BEGIN{RS="\1";ORS="";getline;gsub("\r","");print>ARGV[1]}' file
ในการเพิ่มการขึ้นบรรทัดใหม่ให้ทำดังนี้
awk 'BEGIN{RS="\1";ORS="";getline;gsub("\n","\r&");print>ARGV[1]}' file
dos2unix
ใช่การใช้งาน ตัวอย่างเช่น:
[justin@mybox ~]$ dos2unix myfile
dos2unix
โดยปกติจะมีให้ใช้เป็นอย่างอื่นsed -e 's/\r$//'