`

回车 \r 和\r\n 的困惑

阅读更多

本周一直在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

    将当前目录下的所有sh文件的\r\n回车符改为\n

    深入Windows下的回车是回车换行(\r\n)还是换行回车(\n\r)的详解

    记得在Windows下学X86汇编语言时,用0DH(\r)和0AH(\n)来输出回车(跳到下一行的开始处)。问题来了,在Windows下是先回车再换行呢还是先换行再回车呢?在Unix系统下换行只有\n,MAC OS下只有\r(网上是这么说的, 没用过...

    回车和换行区别

    而在 Windows 中,要回车符+换行符("\r\n")才会回车+换行,缺少一个控制符或者顺序不对都不能正确的另起一行。 回车和换行的区别是计算机编程中一个基础概念,了解它们的历史、概念、区别和应用可以帮助我们更好...

    回车和换行的区别 回车和换行的区别

    1. **Windows系统**:Windows系统中,回车和换行是一起使用的,即`\r\n`组合。这是因为在DOS(Windows的前身之一)时期继承了这一传统,确保了文本文件在显示或打印时能够正确地换行。因此,在Windows中创建的文本...

    MySQL数据中很多换行符和回车符的解决方法

    我到公司后先测试一下客户给我的错误示例(果然搜不到),然后排查一下昨天的数据是否有问题,发现昨天客户用excel导入的数据中,存在很多\r\n这种换行符和回车符。 如:库中数据为:“换行符\n换行符\n换行符”,...

    js去除空格和回车符

    要删除字符串中的所有空格和回车符,可以使用正则表达式 `/[\s\n\r]+/g`。这里的正则表达式的含义如下: - `\s`:匹配任何空白字符,包括空格、制表符、换页符等。 - `\n`:匹配换行符。 - `\r`:匹配回车符。 - `+...

    回车与换行的区别详解

    回车与换行是计算机文本处理中的两个基本概念,它们起源于早期的电传打字机时代,以解决打印头定位和纸张移动的问题。在现代计算机系统中,这两个概念仍然有着重要的作用。 回车(Carriage Return),用字符`\r`...

    统计建模与R语言习题答案.pdf

    ### 知识点总结 #### R语言基础操作 1. **列表赋值**:在R语言中,可以使用`c()`函数创建...通过上述知识点的总结,我们可以了解到R语言在统计建模中的应用,以及如何在Linux环境下有效使用R语言处理数据和编写脚本。

    彻底搞清回车(0x0d)和换行(0x0a)

    彻底搞清回车(0x0d)和换行(0x0a) 在计算机世界中,回车符(0x0d)和换行符(0x0a)是两个非常重要的概念,但是很多人对它们的理解却存在一定的混淆。今天,我们就来彻底搞清这两个概念的区别和作用。 首先,...

    易语言屏蔽回车键

    易语言是一种专为初学者设计的编程语言,它采用了贴近自然语言的编程语法,使得编程过程更为简单易懂。在易语言中,我们经常会遇到需要处理键盘事件的情况,比如屏蔽某些特定的按键,例如回车键。回车键在很多程序中...

    把富文本的回车转为br标签

    ‘↵’是回车符’/n’,这段内容是通过textarea人为编辑,提交给后端保存的。编辑框中可以识别的字符,在普通的标签里面没办法识别到,所以要转换成可以识别的 方法1 string.replace(/(rn|n|r)/gm, ) 然后再用...

    关于回车和换行

    ### 关于回车和换行的知识点 #### 1. 回车与换行的历史背景 在计算机技术尚未成熟之前,电传打字机(Teletype Model 33)是一种重要的通信工具,用于发送和接收电报。这种设备的工作原理是通过一系列的机械动作来...

    textarea换行符

    当用户在`textarea`中按下回车键时,浏览器会将其识别为换行符(`\r\n`),这在JavaScript读取`textarea`的值时也会体现出来。然而,在后续的数据处理过程中,例如在业务逻辑层将这些值转换成字符串形式并存储到...

    输入10个字符,统计其中英文字母、空格或回车、数字字符和其他字符的个数(C语言代码)

    } else if (ch == ' ' || ch == '\n') { // 回车在C语言中表示为'\n' ++space_or_cr; } else if (ch &gt;= '0' && ch ) { ++digit; } else { ++other; } } printf("英文字母: %d\n", alpha); printf("空格或...

    Python实现把回车符\r\n转换成\n

    在给定的标题和描述中,提到的是如何使用Python来将"\r\n"(Windows风格的换行符)转换为"\n"(Unix/Linux风格的换行符)。 以下是一个具体的Python脚本,它实现了这个功能: ```python import os def replace...

    intermec ck 设置扫描后回车

    在IT行业中,Intermec CK系列手持终端是广泛应用于...因此,"intermec ck 设置扫描后回车"是一个对提升工作效率非常有帮助的技巧,对于依赖于Intermec CK设备的企业和开发团队来说,了解并掌握这一设置是十分必要的。

    js禁用回车的方法

    js禁止回车,js禁用回车,捕捉回车js

    移除字符串中空格和回车符

    ### 移除字符串中空格和回车符 在日常的文本处理中,经常会遇到需要清理字符串中的空格、回车等字符的情况。这些字符可能会干扰数据处理或导致格式问题。下面将详细介绍如何通过编程手段有效地移除字符串中的空格和...

    回车变成Tab的解决方案

    可以在运行时通过修改用户控件"EnterAsTab_SubPage.ascx"的属性"DiscardIEDefaultButton"和"EnterAsTab"的值来动态决定是否启用回车键变成Tab键的功能。 在启用回车键变成Tab键的功能的状态下,不会影响到...

Global site tag (gtag.js) - Google Analytics