我在Unix中有一个文件,其中有一个额外的回车符出现在特定字段中并希望将其删除。
我尝试在字段中打印字符的ASCII值,它显示如下:
head -1 BVP.csv | cut -d“,” - f26 | tr -d“\ n”| od -An -t dC 34 78 13
该字段中的实际值为:“N [回车]
所以我尝试按如下方式删除回车符(ASCII值:13)并尝试将输出打印到新文件BVP1.csv:
tr -d'\ r'< BVP.csv> BVP1.csv
然后我执行了相同的命令
头-1 BVP1.csv | cut -d“,” - f26 | tr -d“\ n”| od -An -t dC
34 78
它打印ASCII值而不回车。
但是当我在任何文本编辑器中打开文件,甚至从Windows打开文件时,我都可以看到该行打破了文件中的新记录,即不会删除其他换行符。
任何人都可以建议一种方法来删除现场出现的额外回车。
先谢谢, 汤姆
答案 0 :(得分:0)
我愿意打赌在你试图消除的LF
(ASCII 13)之后有一个CR
(ASCII 10)字符。由于你的tr -d '\n'
,你没有看到它。我愿意打赌你需要从BVP.csv的第26栏中移除CR
和LF
。但是,您只想删除LF
之后出现的CR
。
您可以尝试使用这个简单的perl配方从csv文件中删除所有CR+LF
个组合,同时保持裸LF
完整:
perl -p -e 's/\r\n//g' < BVP.csv > BVP1.csv
这将在CR+LF
单独留下时删除LF
。
我认为这会做你想要的是因为没有尾随CR
的裸LF
相对不常见。 MacOS X之前的文本文件格式使用CR
而没有LF
。自OS X以来,这些已经大大减少了。