windows和linux下换行符区别

把windows下换行符转换为linux下换行符

python环境下有一个很简单的解决方法:

#!usr/bin/env python
#coding: utf-8
import sys, pprint
import os


def main():
    print 'Hello world!'
    line1 = "echo 'Hello!'\r\necho 'Thanks!'"
    print line1
    line2 = line1.replace('\r\n', '\n') # windows下换行符为\r\n,linux下换行符为\n,还有python中str的replace方法类似于java中String的replaceAll方法,全局替换
    print line2

if __name__ == '__main__':
    main()




转自:http://blog.csdn.net/niuniuchou/article/details/5385881

windows(dos)下的换行符 和 linux (ubuntu)下的换行符是不同的。

在涉及到DOS下的文本 在LINUX下 操作时,就涉及到换行符不同带来的麻烦。

 

,在DOS使用的换行符为 ^M$,我们称为CR与LF两个符号。而在Linux中,则仅有LF ($) 这个换行符。这个换行符对于

Linux的影响很大。 我们说过,在开始执行Linux命令时,它的判断依 据是“Enter”,而Linux的Enter为LF符号。不过,

由于DOS的换行符是CRLF,就是多了一个 ^M的符号,在这样的情况下,如果是一个shell脚本的程序文件,将可能造

成“程序无法执行”的状态,因为它会误判程序的命令内容。

 

怎么办?很简单,将格式转换为Linux即可。要以vi进入该文件,然后一个一个地删除CR吗?当然不是。我们可以通过

简单的命令来进行格式的转换。

 

dos2unix

 

通过man 查找命令使用语法

 

因为换行符以及DOS与Linux操作系统中一些字 符的定义不同,因此,建议不要在Windows系统中将文件编辑好之后,

才上传到Linux系统,这样容易发生错误。而且,如果在不同的系统之间复制一些 纯文本文件时,

千万要使用unix2dos或dos2unix来转换格式。

 

CR, LF, CR/LF是不同操作系统上使用的换行符.
Dos和windows采用回车+换行CR/LF表示下一行, 
而UNIX/Linux采用换行符LF表示下一行,
苹果机(MAC OS系统)则采用回车符CR表示下一行.
CR用符号'/r'表示, 十进制ASCII代码是13, 十六进制代码为0x0D; 
LF使用'/n'符号表示, ASCII代码是10, 十六制为0x0A.
所以Windows平台上换行在文本文件中是使用 0d 0a 两个字节表示, 而UNIX和苹果平台上换行则是使用0a或0d一个字节表示.


一般操作系统上的运行库会自动决定文本文件的换行格式. 如一个程序在windows上运行就生成CR/LF换行格式的文本文件,

而在Linux上运行就生成LF格式换行的文本文件.
在一个平台上使用另一种换行符的文件文件可能会带来意想不到的问题, 特别是在编辑程序代码时. 有时候代码在编辑器中

显示正常, 但在编辑时却会因为换行符问题而出错.
很多文本/代码编辑器带有换行符转换功能, 使用这个功能可以将文本文件中的换行符在不同格式单互换.
在不同平台间使用FTP软件传送文件时, 在ascii文本模式传输模式下, 一些FTP客户端程序会自动对换行格式进行转换. 经过

这种传输的文件字节数可能会发生变化. 如果你不想ftp修改原文件, 可以使用bin模式(二进制模式)传输文本.

 

 

 

标志符号十进制Asscii码数                   十六进制数                              

 

CR

/r                          13  0x0D
LF/n 100x0A

 

标志Win/Doslinux,Unix等
换行 /r/n     (<CR><LF>)                /n       (<LF>)        

 

 

 

 

 

 

CRLF的含义是“carriage return/line feed”,意思就是回车。这是两个ASCII字符,分别排在第十三和第十位。CR和LF是在计算机终端还是电传打印机的时候遗留下来的东西。电传打字机 就像普通打字机一样工作。在每一行的末端,CR命令让打印头回到左边。LF命令让纸前进一行。虽然使用卷纸的终端时代已经过去了,但是,CR和LF命令依 然存在,许多应用程序和网络协议仍使用这些命令作为分隔符。





转自:http://blog.sina.com.cn/s/blog_49cfe3f10100k3d8.html

Ubuntu安装dos2unix命令


Ubuntu系统打开Windows下生成的文本文件,会在每行的末尾出现’^M

原因就是Windows和Linux的回车符是不同的

在Windows下回车符是\r\n回车换行

在Linux下回车符是\n

最简单、最常用的解决方法是使用dos2unix命令转换:dos2unix filename

Ubuntu下dos2unix和unix2dos命令在tofrodos包中

安装:apt-get install tofrodos

安装完之后用dos2unix和unix2dos发现还是不能用,原来是Ubuntu10.04里已经不再用这个命令啦,

$ dpkg -L tofrodos
/.
/usr
/usr/bin
/usr/bin/fromdos
/usr/share
/usr/share/man
/usr/share/man/man1
/usr/share/man/man1/fromdos.1.gz
/usr/share/doc
/usr/share/doc/tofrodos
/usr/share/doc/tofrodos/NEWS.Debian.gz
/usr/share/doc/tofrodos/tofrodos.html
/usr/share/doc/tofrodos/copyright
/usr/share/doc/tofrodos/changelog.Debian.gz
/usr/share/doc/tofrodos/readme.txt.gz
/usr/bin/todos
/usr/share/man/man1/todos.1.gz

可以看出,改成todos和fromdos了,在Ubuntu网站上http://packages.ubuntu.com/zh-cn/jaunty/tofrodos对tofrodos有如下解释:
Tofrodos comprises one program, "fromdos" alias "todos", which converts text files to and from these formats. Use "fromdos" to convert DOS text files to the Unix format, and "todos" to convert Unix text files to the DOS format.
这里是对fromdos和todos用法的介绍。这两个命令还是比较容易记的,也好理解,更加人性化。

但是有些地方不得不用老的命令dos2unix和unix2dos,怎么办呢?以下引自一篇文章:
http://blog.csdn.net/HandonFeng/archive/2010/05/08/5569186.aspx  大家可以尝试下:

解决方案之一是下一个busybox编译,然后自己建个符号连接。

我用的是busybox1.15.2,里面包含的了这两个命令:

$ ./busybox
BusyBox v1.15.2 (2010-03-22 11:29:01 CST) multi-call binary
Copyright (C) 1998-2008 Erik Andersen, Rob Landley, Denys Vlasenko
and others. Licensed under GPLv2.
See source distribution for full notice.

Usage: busybox [function] [arguments]...
   or: function [arguments]...

    BusyBox is a multi-call binary that combines many common Unix
    utilities into a single executable.  Most people will create a
    link to busybox for each function they wish to use and BusyBox
    will act like whatever it was invoked as!

Currently defined functions:
    [, [[, addgroup, adduser, adjtimex, ar, arp, arping, ash, awk, basename, beep, blkid,

    brctl, bunzip2, bzcat, bzip2, cal, cat, catv, chat, chattr, chgrp, chmod, chown, chpasswd,

    chpst, chroot, chrt, chvt, cksum, clear, cmp, comm, cp, cpio, crond, crontab, cryptpw,

    cttyhack, cut, date, dc, dd,  deallocvt, delgroup, deluser, depmod, devmem, df, dhcprelay,

    diff, dirname, dmesg, dnsd, dnsdomainname, dos2unix, du, dumpkmap, dumpleases, echo,

    ed, egrep, eject, env, envdir, envuidgid, ether-wake, expand, expr, fakeidentd, false, fbset,

    fbsplash, fdflush, fdformat, fdisk, fgrep, find, findfs,  fold, free, freeramdisk, fsck, fsck.minix,

    fsync, ftpd, ftpget, ftpput, fuser, getopt, getty, grep, gunzip, gzip, halt, hd, hdparm, head,

    hexdump, hostid, hostname, httpd, hush, hwclock, id, ifconfig, ifdown, ifenslave, ifplugd,

    ifup, inetd, init, insmod, install, ionice, ip, ipaddr, ipcalc, ipcrm, ipcs, iplink, iproute, iprule,

    iptunnel, kbd_mode, kill, killall, killall5, klogd, last, length, less, linux32, linux64, linuxrc, ln,
    loadfont, loadkmap, logger, login, logname, logread, losetup, lpd, lpq, lpr, ls, lsattr, lsmod,

    lzmacat, lzop, lzopcat, makedevs, makemime, man, md5sum, mdev, mesg, microcom,

    mkdir, mkdosfs, mkfifo, mkfs.minix, mkfs.vfat, mknod, mkpasswd, mkswap, mktemp,

    modprobe, more, mount, mountpoint, msh, mt, mv, nameif, nc, netstat, nice, nmeter,

    nohup, nslookup, od, openvt, passwd, patch, pgrep, pidof, ping, ping6, pipe_progress,

    pivot_root, pkill, popmaildir, poweroff, printenv, printf, ps, pscan, pwd, raidautorun, rdate,

    rdev, readahead, readlink, readprofile, realpath, reboot, reformime, renice, reset, resize, rm,

    rmdir, rmmod, route, rtcwake, run-parts, runlevel, runsv, runsvdir, rx, script, scriptreplay,

    sed, sendmail, seq, setarch, setconsole, setfont, setkeycodes, setlogcons, setsid, setuidgid,

    sh, sha1sum, sha256sum, sha512sum, showkey, slattach, sleep, softlimit, sort, split,
    start-stop-daemon, stat, strings, stty, su, sulogin, sum, sv, svlogd, swapoff, swapon,

    switch_root, sync, sysctl, syslogd, tac, tail, tar, tcpsvd, tee, telnet, telnetd, test, tftp, tftpd,

    time, timeout, top, touch, tr, traceroute, true, tty, ttysize, tunctl, udhcpc, udhcpd, udpsvd,

    umount, uname, uncompress, unexpand, uniq, unix2dos, unlzma, unlzop, unzip, uptime,

    usleep, uudecode, uuencode, vconfig, vi, vlock, volname, watch, watchdog, wc, wget, which,

    who, whoami, xargs, yes, zcat, zcip





  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值