博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WINDOWS和UNIX换行符的理解
阅读量:5088 次
发布时间:2019-06-13

本文共 1845 字,大约阅读时间需要 6 分钟。

# 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 ("\r\n") as a line ending,     CRLF ( \r\n ,  0D 0A )
which Unix uses just line feed ("\n").    LF ( \n ,  0A ).
0D CR (carriage return)  回车键  displayed "^M" in Unix and Linux.
所以脚本中此条命令echo $line"     "${delay} >> delay.log
读取完$line后每行后面多了个\r,表示回车,即回到每行的行首,所以${delay}会在行首覆盖显示
#### 历史
  早期的计算机输出设备不是显示器,而是电传打字机,结构与普通的打字机差不多。有一个打印头在纸上打字,同时有一个电动机控制纸张的进出。当打印头到达行尾的时候,需要两个动作才能够到达下一行的行首:首先执行回车动作,将打印头移动到本行的行首,然后进行换行动作,电动机将纸张向上移动一行,这样打印头就处于下一行的行首,可以继续进行打印。回车和换行对应的控制字符分别是\r和\n,这就是windows中换行符为\r\n的由来。后来由于经常连续执行,所以在打印机中将这两个控制字符简化为一个控制字符,这就是linux/unix中的换行符\n的由来。
  
#### 解决
In [vim](http://www.vim.org/), use `:set ff=unix` to convert to Unix; use `:set ff=dos` to convert to Windows.

转载于:https://www.cnblogs.com/roni/p/6207743.html

你可能感兴趣的文章
二、spring中装配bean
查看>>
VIM工具
查看>>
javascript闭包
查看>>
@Column标记持久化详细说明
查看>>
创建本地yum软件源,为本地Package安装Cloudera Manager、Cloudera Hadoop及Impala做准备...
查看>>
mysql8.0.13下载与安装图文教程
查看>>
站立会议08(冲刺2)
查看>>
url查询参数解析
查看>>
http://coolshell.cn/articles/10910.html
查看>>
[转]jsbsim基础概念
查看>>
DIV和SPAN的区别
查看>>
第一次使用cnblogs
查看>>
C#语法糖之 session操作类 asp.net
查看>>
2015 Multi-University Training Contest 3
查看>>
使用Gitblit 在windows 上部署你的Git Server
查看>>
217. Contains Duplicate
查看>>
vue2.0 关于Vue实例的生命周期
查看>>
jenkins 更换主数据目录
查看>>
Silverlight中恼人的g.i.cs错误
查看>>
SQLite 数据库增删改查
查看>>