文本的两种格式---dos和unix

本文虽然题目是这样写的,但是并不仅仅有这两种.至少我还知道另外一种,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.

可能上面的总结并没有那么全面.不过对于使用而言,已经足够了.

时间: 2024-10-29 10:46:28

文本的两种格式---dos和unix的相关文章

Android中system.img的两种格式及其相互转换方法

搞Android的同学经常会接触到system.img.但是该文件经常以两种格式出现:raw和sparse. 一种是raw ext4 image,即经常说的raw image,使用file观察它: 其特点是完整的ext4分区镜像(包含很多全零的无效填充区),可以直接使用mount进行挂载,因此比较大(一般1G左右). $ file system.img system.img: Linux rev 1.0 ext4 filesystem data, UUID=57f8f4bc-abf4-655f-

CAD图纸的两种格式如何进行互转?

CAD图纸的两种格式如何进行互转?相信专业从事CAD工作的人都知道CAD基本的两种格式是dwg和dxf格式,这两种格式在工作中也会需要对其进行相互的转换,那么我们应该如何进行操作来将这两种格式进行相互的转换呢?今天小编就来教大家使用CAD转换器来将这两种CAD图纸的格式进行转换的全部操作,希望能够帮助到大家! 第一步:首先要打开你们电脑上面的CAD转换器软件,如果你们电脑上没有这款软件的话,就需要去到官网上面进行下按在操作了,今天小编在这里使用的就是这款"迅捷CAD转换器"需要可以进行

【转】思维导图编写测试用例的两种格式

现在有一个需求,完整的描述如下: 现在有一个 PC 客户端的命令行工具,这个工具可以接收三个命令行参数,其中,前两个是数字,最后一个是运算符,运算符只支持加减乘除四种,工具的功能就是把前两个数字使用运算符做下运算,然后输出运算结果. 分别使用两种格式来编写的测试用例如下图所示(部分用例): 第一种风格,完全是遵循脑图的本来用法,属于层级递进式,前面层级都是后面层级的前置条件,需要把每一个分支的所有层级全部组合到一起,才是一条完整的用例. 第二种风格,是按照要素归类的方式,每一层都是同一要素的不同

C# 用Serializer.ToXml()方法转换成两种格式的XML

常见XML格式两种: 这种是属性的格式,实体的Model属性上面加上这个特性 [XmlAttribute] <AAA aa="11" bb="22"/> 这种是标签的格式,实体的Model属性上面加上这个特性[XmlElement(ElementName = "显示的名字")] <AAA> <aa>11<aa/> <bb>22<bb/> <AAA/> 原来在VS中

(转)MP4文件两种格式AVC1和H264的区别及利用FFMPEG demux为h264码流事项

出自:http://www.mworkbox.com/wp/work/314.html 2013-05-04 MP4的视频H264封装有2种格式:h264和avc1,对于这个细节,很容易被忽略.笔者也是在改编LIVE555流媒体时,增加mp4文件类型支持时遇到了该问题. (一)首先,从原理上了解一下这2种格式的区别:AVC1 描述:H.264 bitstream without start codes.一般通过ffmpeg转码生成的视频,是不带起始码0×00000001的.H264 描述:H.2

How-to:绘制换行文本的两种方法

第一种方法:用GDI+在矩形中绘制换行文本 1 private void btnGDIPlusMethod_Click(object sender, EventArgs e) 2 { 3 this.pictureBox1.Image = new Bitmap(this.pictureBox1.Width, this.pictureBox1.Height); 4 Graphics g = Graphics.FromImage(this.pictureBox1.Image); 5 g.Clear(C

根文件系统移植(2)——根文件系统的两种格式

一:镜像格式的根文件系统 (1)镜像文件的根文件系统的主要作用是用来以后烧录到块设备上面的,块设备上的内核启动后去挂载它. (2)镜像形式的根文件系统是由文件夹格式的根文件系统通过特定的工具(mke2fs)制作得到的 (3)镜像文件系统具有一定的格式,格式是内化的,跟文件名后缀是无关,而是在制作时决定的. 二:文件夹格式的根文件系统 (1)简单来说,文件夹格式的根文件系统其实就是我们开发主机下的一个文件夹而已,不同之处在于这个文件夹里面包含了我们根文件系统所需的内容(包括etc目录下的运行时配置

log4j配置参考手册:log4j.properties和log4j.xml两种格式

log4j是Java Web开发中,最常用的日志组件之一.网上关于log4j的配置满天飞,我主要是从网上学习的配置.之前的很多年,主要使用log4j.properties这种格式.后来,项目中boss使用了log4j.xml这种配置.   关于xml配置,之前也用过,主要觉得麻烦,而且还要手动配置listener,所以基本不用.   和boss交流了下,发现xml格式的配置,语法更全面.我主要发现了2种"高端用途" :1.业务日志与系统日志相分离.(这个比较有价值)2.配置过滤器. (

Java解析,导出Excel文件(.xlsx跟.xls两种格式)&amp;字体修改&amp;单元格合并

做项目时要用到Excel批量导入导出数据,网上搜了以下大部分都是.xls格式Excel文件的教程. 导入.xlsx跟.xls格式的过程差不了多少,就是导出的时候好像有点不同,而且网上也没教程,于是硬着头皮写了一个(并没有看官方Api文档( ̄▽ ̄)"). 首先是导入Jar包,在上传的项目里面已经将需要用到的Jar文件放在lib文件夹里面了,我们只需要在Eclipse里面设置一下: 这里表格信息用Teacher这个类封装: package JavaBean; public class Teacher