操作系统 文件换行符问题
首先介紹下,在ASCII中存在這樣兩個字符CR(編碼為13)和 LF(編碼為10),在編程中我們一般稱其分別為’\r’和’\n’。他們被用來作為換行標志,但在不同系統中換行標志又不一樣。下面是不同操作系統采用不同的換行符:
Unix和類Unix(如Linux):換行符采用 \n
Windows和MS-DOS:換行符采用 \r\n
Mac OS X之前的系統:換行符采用 \r
Mac OS X:換行符采用 \n
Linux中查看換行符
第一種使用"cat -A [Filename]" 查看,如下圖所示,看到的為一個Windows形式的換行符,\r對應符號^M,\n對應符號$.
Windows換行符轉換為Linux格式
下面介紹三種方法,選擇哪一種看自己喜好,當然你也可以選擇第x種,_。
(1)第一種使用VI: 使用VI普通模式打開文件,然后運行命令”set ff=unix” 則可以將Windows 換行符轉換為Linux換行符,簡單吧!命令中ff的全稱為file encoding。
(2)使用命令”dos2unix”,如下所示
[root@localhost test]# dos2unix gggggggg.txt dos2unix: converting file gggggggg.txt to UNIX format ...* 匹配全部文件 Windows換行符轉換為Linux格式
sed -i 's/\r$//g' *
(3)使用sed命令刪除\r字符:
[root@localhost test]# sed -i 's/\r//g' gggggggg.txt
多文件處理換行符轉換
通常我們都會有一批文件需要替換,比如一個目錄的都要替換,我自己寫了一個簡單的腳本去遍歷目錄和子目錄下的所有文件,并且將其轉換為Linux換行格式。代碼如下:
#!/bin/sh #CheckInput #Check Whether the input is valid #0 means not valid CheckInput() { ret=1; #Check the number of parameter #And Check whether the argument is a folder if [ $# -lt 1 ] then echo "Please use the command like ./dos2u.sh [Folder]"; ret=0 elif [ ! -d $1 ] then echo "Please use an invalid Folder as the shell argument"; ret=0 fi return $ret; } #TraverseFolder #Traser all the files under the folder TraverseFolder() { oldPath=`pwd` cd $1; for file in `ls` do if [ -d $file ] then TraverseFolder $file; else #echo $file; #sed -i 's/\r//g' $file dos2unix $file fi done cd $oldPath; } CheckInput $* if [ $ret -ne 1 ] then exit -1 fi TraverseFolder $1可以直接
用vi命令打開要替換尖括號的文件
直接輸入: :set ff=unix 表示設置文件格式是unix格式
總結
以上是生活随笔為你收集整理的操作系统 文件换行符问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Telephony框架分析
- 下一篇: 启用计算机的无线同屏,完美:将计算机转换