1

我在 Unix 中有一个文件,其中有一个额外的回车字符出现在特定字段中,并且想要删除它。

我尝试打印字段中字符的 ASCII 值,它显示如下:

头 -1 BVP.csv | 剪切 -d "," -f26 | tr -d "\n" | od -An -t 直流 34 78 13

该字段中的实际值为:“N[回车]

所以我尝试如下删除回车符(ASCII 值:13),并尝试将输出打印到新文件 BVP1.csv:

tr -d '\r' < BVP.csv > BVP1.csv

然后我执行了相同的命令

头-1 BVP1.csv | 剪切 -d "," -f26 | tr -d "\n" | od -An -t 直流

34 78

它打印没有回车的 ASCII 值。

但是当我在任何文本编辑器甚至从 Windows 中打开文件时,我可以看到该行在文件中插入了一条新记录,即没有删除额外的换行符。

任何人都可以建议一种方法来删除该字段中出现的这个额外的回车。

提前致谢,汤姆

4

1 回答 1

0

我敢打赌,在您要消除LF的 (ASCII 13) 之后有一个 (ASCII 10) 字符。CR你看不到它是因为你的tr -d '\n'. 我敢打赌,您需要从 BVP.csv 的第 26 字段中删除CR和。LF但是,您只想删除LFs 之后出现的 s CR

您可以尝试这个简单的 perl 配方CR+LF从 csv 文件中删除所有组合,同时保持LF原样:

perl -p -e 's/\r\n//g' < BVP.csv > BVP1.csv

CR+LF这将在一个人离开时剥离LF

我认为这会做你想要的原因是CR没有尾随LF的裸露相对不常见。CR没有LF. _ 自 OS X 以来,这些功能的受欢迎程度急剧下降。

于 2013-07-10T07:51:01.850 回答