Vi 小技巧 ( 轉換 Windows 換行 CR LF 至 Unix LF )

 

 

VI 很主要; 常在 Unix / Linux 利用 vi 操作的人, 應當常常遇到這 Windows (DOS) 換行符號; 用 vi 編纂器看到的是 每一行的最後總有個 ^M , 如下: 

 

# vi ./rom.java

 

package com.example.menu;^M
^M
/**^M
 * Created by LEXRA on 2017/6/23.^M
 */^M
^M
public class rom {^M
    int Start;^M
    int Length;^M
    String Domestic;^M
    String Overseas;^M
    String Path;^M
    byte [] Header;^M
^M
    rom() {^M
        Start = -1;^M
        Length = 0;^M
    }^M
}^M

 

利用 Sed

 

我要介紹的是 vi 小技能, 而非 DOS 至 UNIX 換行格局的轉換.  利用 sed 可以到達此目標. 

 

# sed 's/^M//g' ./rom.java
...

 

# sed 's/^M//g' ./rom.java > ./rom.java

 

上述號令單引號以內: 

s 是代替的意思
反斜線以內  / ABC / xyz /  是 以 XYZ 替換 ABC ; 反斜線之內是正規暗示式 (Regular Expression) .
^M 是 CR
g 是 global 的意思 ; 假如這一行有多的 match, 所有的 match 都替代. 

 

 

利用 Vi 轉換 Windows 換行 CR LF 至 Unix LF

 

利用 Vi 轉換 Windows CR LF 至 Unix LF, 你需要的是下列 vi 命令: 1,$ s/^M//g

 

1,$ s/^M//g

 

1 是第一行. 
$ 是最後一行. 1,$ 合起來就是檔案全部. 
s 是代替的意思
反斜線之內  / ABC / xyz /  是 以 XYZ 替換 ABC ; 反斜線以內是正規表達式. 
^M 是 CR 的意思
g 是 global 的意思 ; 假如這一行有多的 match, 所有的 match 都替換. 

 

 

問題來了, 在 vi 號令列中若何輸入 ^M 呢? 謎底是由 "Ctrl+V" 和 "Ctrl+M" 來完成. 

 

package com.example.menu;^M
^M
/**^M
 * Created by LEXRA on 2017/6/23.^M
 */^M
^M
public class rom {^M
    int Start;^M
    int Length;^M
    String Domestic;^M
    String Overseas;^M
    String Path;^M
    byte [] Header;^M
^M
    rom() {^M
        Start = -1;^M
        Length = 0;^M
    }^M
}^M
~
~
~
~
:1,$ s/^M//g

 

轉換完成之後存檔即可. 如何? 還不賴吧? 重點兒在於這 vi 的小技能而不在於 0D 0A 轉換為 OA . 

 

package com.atgames.menu.hal;

/**
 * Created by LEXRA on 2017/6/23.
 */

public class rom {
    int Start;
    int Length;
    String Domestic;
    String Overseas;
    String Path;
    byte [] Header;

    rom() {
        Start = -1;
        Length = 0;
    }
}
~
~
~
~
:wq

 

 

利用 NotePad

 

在 Windows 功課系統中, 我們可使用 Notepad 編輯器 轉換 Windows 換行格式 或是 Unix 換行花式 . 

 

unix2dos_notepad.gif

 

 

 

 

 

 

 

 

 

 

文章標籤
vi sed


以下內文出自: http://lexra.pixnet.net/blog/post/335816299-%EF%BF%AD-vi-%E5%B0%8F%E6%8A%80%E5%B7%A7-%28-%E8%BD%89%E

arrow
arrow
    文章標籤
    xyz
    全站熱搜

    xm17frazcummi 發表在 痞客邦 留言(0) 人氣()