2010-06-24 19:18:49 iteye_13967 阅读数 81

DOS/Windows 和Linux/Unix的文件换行回车格式不同,基于 DOS/Windows 的文本文件在每一行末尾有一个 CR (回车)和 LF (换行),而 UNIX 文本只有一个换行。

    1 )、把Dos/Windows 下的文件移至Linux/Unix系统

    虽然很多程序不在乎 DOS/Windows格式的 CR/LF文本文件,但是有几个程序却在乎——最著名的是 bash ,只要一遇到回车,它就会出问题。以下 sed调用将把 DOS/Windows格式的文本转换成可信赖的 UNIX 格式:

    $ sed -e 's/.$//' mydos.txt > myunix.txt

    该脚本的工作原理很简单:替代规则表达式与一行的最末字符匹配,而该字符恰好就是回车。我们用空字符替换它,从而将其从输出中彻底删除。如果使用该脚本并 注意到已经删除了输出中每行的最末字符,那么,您就指定了已经是 UNIX格式的文本文件。也就没必要那样做了!

    2 )、把Linux/UNIX文本移至 Windows系统,使用以下脚本执行必需的格式转换:

    $ sed -e 's/$/\r/' myunix.txt > mydos.txt

    在该脚本中,'$' 规则表达式将与行的末尾匹配,而 '\r' 告诉 sed在其之前插入一个回车。在换行之前插入回车,立即,每一行就以 CR/LF结束。请注意,仅当使用 GNU sed 3.02.80或以后的版本时,才会用 CR 替换 '\r'.

2015-03-11 17:46:46 abel__2008 阅读数 303
用 vim 完成 dos格式文本文件到 linux格式文本文件的转换
dos格式的文本文件和linux下的文本文件格式有回车和换行的差别,即在dos下编辑的纯文本文件在 linux 用 vim 打开时会有 ^M 显示,为解决这个可以简单采用一下方法: 
1 dos2unix 程序 ubuntu 下没有安装此程序
2 用 vim 转换,用vim打开文本文件,用 set fileformat=unix 转换
vim test.txt 
:set fileformat=unix
:wq
3 用 vim 替换命令处理
vim test.txt
:%s/^M/g
:wq
^M=Ctrl+V+M

以上仅供参考
2017-01-28 23:28:36 mrbcy 阅读数 695

有时我们在Windows下面写了一些脚本想要放到Linux下面执行的时候会出错。一个原因就是Windows使用DOS格式的文件,而Linux使用Unix格式的文件。

可以使用下面的命令查看文件的格式。

vim start_zookeeper_all.sh
:set fileformat

如果显示的结果是fileformat=dos,我们可以使用下面的命令方便的将其转化成Linux的文件格式。

vim start_zookeeper_all.sh       
:set fileformat=unix
:wq
2019-06-09 19:55:09 sweeper_freedoman 阅读数 785
#!/usr/bin/env bash
# Author    : 蛙鳜鸡鹳狸猿
# create_ts : 2019-06-06
# program   : Convert DOS/Mac text file format into Unix


function dos_to_unix() {
    # Convert DOS/Mac text file format into Unix under built-in `dos2unix` handler.
        # $1: OS directory path
    local path="$1"
    local path=${path%/}
    local IFS=$'\n'
    # shellcheck disable=SC2045
    for obj in $(ls "${path}")
    do
        if [[ -d "${path}/${obj}" ]]; then
            dos_to_unix "${path}/${obj}"
        else
            dos2unix "${path}/${obj}"
        fi
    done
}


dos_to_unix "$1"

首先遍历目录下所有文件(夹),判断如果为文件夹就继续递归调用,如果不是文件夹,就调用`dos2unix`程序执行文件格式转换。如果系统没有安装`dos2unix`,手动安装一下即可,视不同系统分支可以直接用超级命令(apt / yum)安装。将脚本写入一个Shell文件,然后从Windows系统上拿过来的代码包执行时遇到“\r”等因为操作系统之间文件格式问题导致的报错时,执行一下该Shell脚本,后面将要进行格式转换的文件/文件夹名字作为参数传入,跑一下就OK了。

没有更多推荐了,返回首页