我必须在日志文件中删除大量换行符(十六进制 \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 | 十六进制转储 -C
00000000 0a 69 0a 6e 0a 66 0a 61 0a |.infa|
但是如果我想删除 '\x0a' 它不起作用:
sed -r 's/\x0a//g' hexprob.txt | 十六进制转储 -C
00000000 45 0a 69 0a 6e 0a 66 0a 61 0a |Einfa|
你知道该怎么做吗?我只是不知道为什么我不能像任何其他十六进制值一样替换或删除它?
太感谢了!Fake4d
sed 实用程序是面向行的。读取一行并将其放入模式空间(模式空间不包含 \n)。sed 操作应用于模式空间,然后写出该行,并附加一个 \n。这就是为什么它没有按照您的预期进行。
如果要删除文件中的所有新行,则可以执行此操作
这有效地循环读取文件中的行并将它们附加到模式空间,直到到达最后一行,当整个模式空间被执行以删除 \n 时。
根据您的文件大小,这可能不起作用,因为模式空间的大小可能会受到限制。使用tr来执行此操作通常更便携