文本的两种格式---dos和unix
来源:互联网 发布:各国网络制式mobinil 编辑:程序博客网 时间:2024/06/05 20:26
本文虽然题目是这样写的,但是并不仅仅有这两种.至少我还知道另外一种,mac格式.不过本文只讨论这两种,另外一种可参考这两种做出处理.
今天看了一个脚本,完全都没有问题,但是就是运行不过去.总是提示 syntax error near unexpected token `$'\r'' 令人百思不得其解.其实看了字面的意思也能大致明白错误的原因.但是不知道解决的办法.幸好有度娘.
其实问题的根源作于文本格式,在我一直纠结的过程中却忽略掉了一个重要的问题.
dos文本格式 : 换行是\r\n
unix文本格式 : 换行是\n
也就是说,这个文本其实是dos格式的.纠结了半个消失这个细节.实在惭愧.那么怎么做才能瞬间知道一个文本的格式呢.
仅仅说一下在linux下的做法.当然可能考虑的还不是很全面,有不一样的答案的同学,可以补充,在此谢谢.
1. cat -A 文件名 -A选项的意思是把所有的可打印和不可打印的字符都想方设法的打印出来.如果发现末尾有个^M.那就说明这是个dos格式的文本.
2. 用vim打开,然后在底行的模式下(即冒号模式)执行set fileformat , 就可以查看这个文本当前的格式了.
3. 还有一种方式,vim可能默认都可以正常显示dos和unix,不会让用户看到不该看的.那么我们可以在冒号模式下set fileformats=unix , 然后再在冒号模式下执行edit(作用即为刷新).此时如果每一行末尾都出现了^M,那么说明文件格式为dos的.
现在我们知道怎么去鉴别格式问题了.那么怎么去修改呢.网上给出了一个比较复杂的方式
1. sed -i s/^M//g 这个命令行不行呢,没有问题,只是千万别直接敲shift+6 shift+m.这样是不对的,正确的做法是ctrl+v ctrl+m .只有这样执行才能得到想要的结果.-i的意思就是直接替换原文.
2. dos2unix 偷懒可以用这种方式.一个命令直接搞定.不需要去了解sed也不需要去判断什么文本格式,我管你什么格式.
3. 冒号模式下执行set fileformat=unix 也可以搞定.
4. 很多人说可以在冒号的模式下使用% s/^M//g,但是其实则是不行的,这个生效的前提是当前vim的fileformat是unix,如果是dos就不可以.前面的^M同1的键入方式.
再运行脚本,ok.
可能上面的总结并没有那么全面.不过对于使用而言,已经足够了.
- 文本的两种格式---dos和unix
- VB6 转换 Unix 和 DOS 文本格式源代码
- 一个python处理dos和unix格式文本的换行的问题
- dos和unix文本转化
- Linux下的文本dos格式转Unix格式,去除^M符号
- Linux下的文本dos格式转Unix格式,去除^M符号
- 将dos格式换行文本转为Unix格式
- DOS/Windows和Linux/Unix间的文档格式转换
- 代码文本格式转换---Dos to Unix format
- dos和Linux文本格式转换
- Unix/Dos 文本文件格式
- Linux与dos的文本格式区别
- 在Linux中DOS格式的文件和unix格式文件的相互转换
- unix和dos文本文件的一点区别
- Dos和Unix的换行 转换
- unix,MAC和dos文件格式的区别
- unix和dos文本文件的区别
- unix 和 dos 中换行的区别
- CentOS 7 创建本地和网络yum源
- MapReduce初级案例(3):使用MapReduce实现平均成绩
- UVA - 11384 - Help is needed for Dexter (找规律!!)
- lcc 源代码解析之token.h
- NSIS进阶教程(一)~(五)
- 文本的两种格式---dos和unix
- (转)WPF控件开源资源
- vim画ASCII图
- nohup-真正的Shell后台运行
- Linux系统下如何删除某个目录下大量文件
- 【编程语言】进程中栈空间的参数返回值以及局部变量的分布
- JSON参数
- 如何优化MySQL insert性能
- “懒惰” Linux 管理员的 10 个关键技巧