我必须在日志文件中删除大量的换行符(hex\ x0a)。
我只是有sed来解决这个问题。 我知道有点复杂
你有想法如何解决这个问题?
这里是一个示例文本文件: http ://s000.tinyupload.com/index.php?file_id= 05715208147126674999
hexdump -C hexprob.txt
00000000 45 0a 69 0a 6e 0a 66 0a 61 0a | Einfa |
我使用下面的代码来删除'E':
sed -r's / \ x45 // g'hexprob.txt | hexdump -C
00000000 0a 69 0a 6e 0a 66 0a 61 0a | .infa |
但是,如果我想删除'\ x0a'它不工作:
sed -r's / \ x0a // g'hexprob.txt | hexdump -C
00000000 45 0a 69 0a 6e 0a 66 0a 61 0a | Einfa |
你知道该怎么办? 我只是不知道为什么我不能像任何其他hex值一样的replace或删除它?
非常感谢! Fake4d
sed工具是面向行的。 一行被读取并放入模式空间(模式空间不包含\ n)。 sed动作被应用到模式空间,然后线被写出来,并附有\ n。 这就是为什么它没有达到你所期望的。
如果你想删除文件中的所有新行,那么你可以这样做
sed ':a;N;$!ba;s/\n//g' file
这有效地遍历文件读取行并将它们附加到模式空间,直到最后一行到达整个模式空间被删除\ n的时候。
根据您的文件大小,这可能无法正常工作,因为可能会限制模式空间的大小。 使用tr来执行此操作通常更具可移植性
tr -d '\n' <file