zoukankan      html  css  js  c++  java
  • WINDOWS和UNIX换行符的理解

    # WINDOWS和UNIX换行符的理解

    **file1.txt**
    17.143.161.37   其他    美国
    54.163.255.40   其他    美国 弗吉尼亚州 亚马逊公司

    **[root@localhost home]# cat -v file2.txt | head**
    > -v, --show-nonprinting
                  use ^ and M- notation, except for LFD and TAB -v, --show-nonprinting  use ^ and M- notation, except for LFD and TAB
                  
    17.143.161.37   M-eM-^EM-6M-dM-;M-^V    M-gM->M-^NM-eM-^[M-=^M
    54.163.255.40   M-eM-^EM-6M-dM-;M-^V    M-gM->M-^NM-eM-^[M-= M-eM-<M-^WM-eM-^PM-^IM-eM-0M-<M-dM-:M-^ZM-eM-7M-^^ M-dM-:M-^ZM-iM-)M-,M-iM-^@M-^JM-eM-^EM-,M-eM-^OM-8^M
    可以看到在每行的末尾有个^M

        while read line
        do
                ip=`echo $line | awk '{print $1}'`
                echo "---------> "$line
                delay=`ping -c 1 -W 1 "${ip}" | grep "bytes from" | cut -d " " -f 7 | cut -d "=" -f 2`
                echo $line"     "${delay} >> delay.log
        done < ipdata.txt 

    但是没有显示想要的结果,时延反而打在每行的开头。结果如下:
    28158.178 其他 美国
    26287.7 其他 比利时
    74.852.57 其他 韩国

    ## 原因
       ipdata.txt文件是从windows主机copy到linux主机,且采用windows格式,所以怀疑是文件格式问题导致,将文件格式更改为unix格式后,脚本运行正常。
    217.79.179.106 其他 德国    372
    200.73.229.105 其他 巴西    440
    62.182.67.244 其他 乌克兰    404


    ### WINDOW & LINUX的换行区别
    Text files created on DOS/Windows machines have different line endings than files created on Unix/Linux

    DOS uses carriage return and line feed (" ") as a line ending,     CRLF (   ,  0D 0A )
    which Unix uses just line feed (" ").    LF (   ,  0A ).

    0D CR (carriage return)  回车键  displayed "^M" in Unix and Linux.

    所以脚本中此条命令echo $line"     "${delay} >> delay.log
    读取完$line后每行后面多了个 ,表示回车,即回到每行的行首,所以${delay}会在行首覆盖显示

    #### 历史
      早期的计算机输出设备不是显示器,而是电传打字机,结构与普通的打字机差不多。有一个打印头在纸上打字,同时有一个电动机控制纸张的进出。当打印头到达行尾的时候,需要两个动作才能够到达下一行的行首:首先执行回车动作,将打印头移动到本行的行首,然后进行换行动作,电动机将纸张向上移动一行,这样打印头就处于下一行的行首,可以继续进行打印。回车和换行对应的控制字符分别是 和 ,这就是windows中换行符为 的由来。后来由于经常连续执行,所以在打印机中将这两个控制字符简化为一个控制字符,这就是linux/unix中的换行符 的由来。
      
    #### 解决
    In [vim](http://www.vim.org/), use `:set ff=unix` to convert to Unix; use `:set ff=dos` to convert to Windows.






  • 相关阅读:
    sencha touch 扩展篇之将sencha touch打包成安装程序(上)- 使用sencha cmd打包安装程序
    sencha touch 扩展篇之使用sass自定义主题样式 (下)通过css修改官方组件样式以及自定义图标
    一个不错的android组件的网站
    sencha touch 扩展篇之使用sass自定义主题样式 (上)使用官方的api修改主题样式
    sencha touch 入门系列 (九) sencha touch 布局layout
    面试题总结
    国外接活网站Elance, Freelancer和ScriptLance的介绍和对比
    sencha touch 入门系列 扩展篇之sencha touch 项目打包压缩
    Android Design Support Library——Navigation View
    设计模式——命令模式
  • 原文地址:https://www.cnblogs.com/roni/p/6207743.html
Copyright © 2011-2022 走看看