问题:在Linux下正常换行的文字,到了Windows下后,不再换行。
在Windows下换行时,有两个字符:回车(/r)和换行(/n)。但在Linux下,只有一个换行(/n)
可使用unix2dos和dos2unix命令进行格式的转换:
参数:
-k 保持输出文件和输入文件的日期时间戳不变
-o file 默认模式 . 将file转换,并输出到file
-n infile outfile 新模式. 转换infile, 并输出到outfile
1. unix2dos
假设用vi新建一文本文件,输入123456
[root@centos test]# ls -l a.txt
-rw-r--r-- 1 root root 7 Jan 7 21:31 a.txt
[root@centos test]# hexdump -c a.txt
0000000 1 2 3 4 5 6 /n
0000007
[root@centos test]# unix2dos -n a.txt b.txt
unix2dos: converting file a.txt to file b.txt in DOS format ...
[root@centos test]# ls -l
total 8
-rw-r--r-- 1 root root 7 Jan 7 21:31 a.txt
-rw------- 1 root root 8 Jan 7 21:34 b.txt
[root@centos test]# hexdump -c a.txt
0000000 1 2 3 4 5 6 /n
0000007
[root@centos test]# hexdump -c b.txt
0000000 1 2 3 4 5 6 /r /n
0000008
b.txt是转换后的DOS下的文件
2. dos2unix
[root@centos test]# dos2unix -n b.txt c.txt
dos2unix: converting file b.txt to file c.txt in UNIX format ...
[root@centos test]# ls -l
total 12
-rw-r--r-- 1 root root 7 Jan 7 21:31 a.txt
-rw------- 1 root root 8 Jan 7 21:34 b.txt
-rw------- 1 root root 7 Jan 7 21:38 c.txt
[root@centos test]# hexdump -c b.txt
0000000 1 2 3 4 5 6 /r /n
0000008
[root@centos test]# hexdump -c c.txt
0000000 1 2 3 4 5 6 /n
0000007
c.txt是转换后unix下的文本文件