對這文章發表回應
發表限制: 非會員 可以發表
發表者: 冷日 發表時間: 2016/10/16 8:41:17
linux 檔案 新增換行符號
[ linux add(append) carriage return(linefeed) to the end of file ]
linux 的換行符號是 \n
windows 的是 \r\n
如果只是要在檔尾加上 \n,很簡單:
在檔尾就會多 1 byte (用vi 開,游標移到最後,會停在最後一行,不會換行)
如果要換行,要用 echo -e (enable interpretation of backslash escapes)
整個 windows 的文字檔, \r\n 要換成 linux 的換行 \n
可以用下面簡單的 python :
然後將要轉換的文字檔送到標準輸出,再由 python 由標準輸入讀進去:
後來發現 CentOS 自己就有轉換工具:
dos2unix:轉換 DOS/MAC 格式成 UNIX 的文字格式。
unix2dos:轉換 UNIX 的文字格式成 DOS format
在加上一點 script 應該就可以完成上面的麻煩事。
原文出處:linux 檔案 新增換行符號 @ 老人最愛碎碎念 :: 隨意窩 Xuite日誌
[ linux add(append) carriage return(linefeed) to the end of file ]
linux 的換行符號是 \n
windows 的是 \r\n
如果只是要在檔尾加上 \n,很簡單:
$> echo "" >> file.txt
在檔尾就會多 1 byte (用vi 開,游標移到最後,會停在最後一行,不會換行)
如果要換行,要用 echo -e (enable interpretation of backslash escapes)
$> echo -e "\n" >> file.txt
整個 windows 的文字檔, \r\n 要換成 linux 的換行 \n
可以用下面簡單的 python :
$> vi fixNewline.py
#! /usr/bin/python
import sys, shutil
data = sys.stdin.readlines()
print "Start ..."
f = open('/home/userHome/TestTxt/ready.txt', 'w');
for line in data:
if line[-2:] == "\r\n":
f.write( line[:-2] + "\n" )
elif line[-1:] == "\n" :
f.write( line )
else:
f.write( line + "\n" )
f.close()
print "## file close."
print "## finish."
print " "
然後將要轉換的文字檔送到標準輸出,再由 python 由標準輸入讀進去:
$> cat notReady.txt | python fixNewline.py
後來發現 CentOS 自己就有轉換工具:
dos2unix:轉換 DOS/MAC 格式成 UNIX 的文字格式。
unix2dos:轉換 UNIX 的文字格式成 DOS format
在加上一點 script 應該就可以完成上面的麻煩事。
原文出處:linux 檔案 新增換行符號 @ 老人最愛碎碎念 :: 隨意窩 Xuite日誌