首页 > 解决方案 > 无法从文件中删除控制@

问题描述

我有一个包含 ^@ 的文件,我无法在 python 中使用sed或命令删除它。只有在 vi 编辑器中打开文件时replace才能看到。^@请建议。以下是我尝试使用 sed 的内容。

sed 's/^@/?/g' 文件名

标签: unixsed

解决方案


在 Linux 上测试,不确定其他地方的语法是否有所不同,试试

$ printf 'abc\0baz\n' | cat -v
abc^@baz
$ printf 'abc\0baz\n' | tr -d '\0' | cat -v
abcbaz

tr将从输入中删除所有 ASCII NUL 字符。cat -v此处用于突出显示非打印字符

对于文件输入,使用tr -d '\0' <filename


GNU sed(可能还有少数其他实现)允许使用十六进制值来表示字符

$ printf 'abc\0baz\n' | sed 's/\x00//g' | cat -v
abcbaz

因此,对于就地编辑,请使用sed -i 's/\x00//g' filename(另请参阅:sed in-place flag that works both on Mac (BSD) and Linux


推荐阅读