本周一直在linux下面处理一些CSV文件,因为是在linux中处理windows的CSV。所有碰到这两个操作系统对“回车”的不同定义。
linux中直接用 \n 定义回车
windows中用的是 \r\n 来定义回车。
这使得处理脚本的时候碰到个很头疼的问题。
在CSV文件中对回车还有区分:硬回车和软回车。硬回车就是我们平时直接说的回车。软回车,是在同一个单元格中实现的回车。这要在编辑CSV的时候强制实行才行(同时按下Alt + Enter)。
现在来描述一下问题:
因为CSV中有同时有软硬回车的出现。所以一行中会出现多个\n。但这些\n在windows中都不认为是换行符。因为windows认为的换行符是\r\n。可是在linux中就不一样了,linux认为\n是一行的结束。所以在windows下的一行,到linux中就变成了多行了。
为了处理这个问题。我的步骤如下:
1,tr -d '\n' < PIPESEG_F.CSV.4 > PIPESEG_F.4.no_n --去掉文件中所有的\n,并保存到PIPESEG_F.4.no_n,这样PIPESEG_F.4.no_n中只有\r字符,没有\n.
2,echo '\n' > PIPESEG_F.4.no_n。追加\n到PIPESEG_F.4.no_n中,以便下面的sed命令执行。
3,sed 's/\r/\r\n/g' PIPESEG_F.4.no_n > PIPESEG_F.4_rn。用\r\n,替换所有的\r。此时PIPESEG_F.4_rn的行数要比源文件多一行,因为多了一个\n
4,sed '$d' PIPESEG_F.4_rn > PIPESEG_F.4_rn.res 删除文件结尾的一行,实际上这行只有一个\n符合而已,没有实际的数据.完成处理。
下面是我的理解,没有验证:因为sed是按行来读取文件的,而linux的一行是以\n结尾的。在第一步中去掉了所有的\n。这样直接用sed去把\r 替换成\r\n 是实现不了的。
分享到:
相关推荐
将当前目录下的所有sh文件的\r\n回车符改为\n
记得在Windows下学X86汇编语言时,用0DH(\r)和0AH(\n)来输出回车(跳到下一行的开始处)。问题来了,在Windows下是先回车再换行呢还是先换行再回车呢?在Unix系统下换行只有\n,MAC OS下只有\r(网上是这么说的, 没用过...
回车和换行的区别 回车和换行的区别 回车和换行的区别
回车和换行区别
'\r'是回车,'\n'是换行,前者使光标到行首,后者使光标下移一格。通常用的Enter是两个加起来。
js去除空格和回车符
‘↵’是回车符’/n’,这段内容是通过textarea人为编辑,提交给后端保存的。编辑框中可以识别的字符,在普通的标签里面没办法识别到,所以要转换成可以识别的 方法1 string.replace(/(rn|n|r)/gm, ) 然后再用...
设置一个存储区,从键盘输入n(n)个字符并送入存储区,一回车符为结束输入,然后依次从存储区逐个取出在显示器上输入
可以在运行时通过修改用户控件"EnterAsTab_SubPage.ascx"的属性"DiscardIEDefaultButton"和"EnterAsTab"的值来动态决定是否启用回车键变成Tab键的功能。 在启用回车键变成Tab键的功能的状态下,不会影响到...
今天在编写99乘法在线小游戏(看过我的 linux下c实现的数据库备份(第四版)应该知道我在那里提过^.^)的时候遇到读取文件的信息遇到回车换行符的烦恼。 比如我文件里面有如下信息: name=qizexi sex=man 我希望读取...
易语言屏蔽回车键源码,屏蔽回车键
我到公司后先测试一下客户给我的错误示例(果然搜不到),然后排查一下昨天的数据是否有问题,发现昨天客户用excel导入的数据中,存在很多\r\n这种换行符和回车符。 如:库中数据为:“换行符\n换行符\n换行符”,...
主要介绍了Python实现把回车符rn转换成n,本文直接给出实现代码,需要的朋友可以参考下
利用JS限制 DIV中输入回车换行 可以更改回车的功能比如敲回车输入你好我好大家好之类的
在textarea中输入回车符 在js读取textarea中的值有\r\n然后到业务层转换到string中就有可能变成空格形式然后被存入数据库,当在取出此值的时候则会变成空格的形式,因此我们需要将不显示的\r\n替换一下。
在ALV里编写回车事件,通过回车操作数据!
javaScript实现回车登录 javaScript实现回车登录 javaScript实现回车登录
关键字-回车映射-ahk回车映射-左手回车 ;;快捷键x说明 上下左右 ;; CapsLock+a 箭头左 ;; CapsLock+s 箭头下 ;; CapsLock+d 箭头右 ;; CapsLock+w 箭头上 ;; CapsLock+q 箭头上--防止误触屏-CapsLock+q也映射为箭头...