5

我有一个带有unicode 行分隔符的文本文件(十六进制代码 2028)。

我想使用 bash 删除它(我看到Python 的实现,但不是这种语言的实现)。我可以使用什么命令来转换文本文件(output4.txt)以丢失 unicode 行分隔符?

请参阅下面的 vim: 在此处输入图像描述

4

4 回答 4

4

可能这个 tr 命令也应该起作用:

tr '\xE2\x80\xA8' ' ' < inFile > outFIle

工作解决方案:感谢 OP 找到这个:

sed -i.old $'s/\xE2\x80\xA8/ /g' inFile
于 2013-05-14T20:53:10.877 回答
3

我注意到在您的屏幕截图中,您已经在 vim 中打开了文件,那么为什么不直接在 vim 中进行替换呢?

在 vim 你可以做

:%s/(seebelow)//g

(seebelow)部分,您可以键入:

ctrl-vu2028

于 2013-05-14T20:49:08.300 回答
1

您可能可以使用 sed:

sed 's/\x20\x28//g' <file_in.txt >file_out.txt

要覆盖原始文件:

sed -i 's/\x20\x28//g' file.txt

编辑:(见 chepner 的评论)你应该确保你有正确的字节,这取决于编码,然后使用 sed 删除它们。您可以使用例如od -t x1查看十六进制转储并找出编码。

于 2013-05-14T20:35:43.650 回答
0

这对我有用

sed $'s/\u2028//g' file_in.txt > file_out.txt

注意:其他问题使用该术语<U+2028>

于 2019-09-12T14:56:44.333 回答