Windows文件换行符转Linux换行符
操作系統文件換行符
? ? ? 首先介紹下,在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中查看換行符
? ? ? 在Linux中查看換行符的方法應該有很多種,這里介紹兩種比較常用的方法。
? ? ? 第一種使用"cat ?-A [Filename]"?查看,如下圖所示,看到的為一個Windows形式的換行符,\r對應符號^M,\n對應符號$.
? ? ? ??
? ? ?第二種使用vi編輯器查看,然后使用"set list"命令顯示特殊字符:
? ? ??
? ? ? 咦,細心的朋友發現了,怎么^M還是沒顯示出來,這里也是給大家提個醒,用VI的二進制模式(“vi -b [FileName]”)打開,才能夠顯示出^M:
? ? ??
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 ...? ? ? (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 folderif [ $# -lt 1 ] thenecho "Please use the command like ./dos2u.sh [Folder]";ret=0elif [ ! -d $1 ]thenecho "Please use an invalid Folder as the shell argument";ret=0fireturn $ret; }#TraverseFolder #Traser all the files under the folder TraverseFolder() { oldPath=`pwd`cd $1;for file in `ls`doif [ -d $file ]then TraverseFolder $file;else#echo $file;#sed -i 's/\r//g' $filedos2unix $filefi donecd $oldPath; }CheckInput $* if [ $ret -ne 1 ] thenexit -1 fiTraverseFolder $1總結
以上是生活随笔為你收集整理的Windows文件换行符转Linux换行符的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 服务器bios删除系统,服务器重置bio
- 下一篇: 【PBL项目实战】户外智慧农场项目实战系