unix - 无法从文件中删除控制@
问题描述
我有一个包含 ^@ 的文件,我无法在 python 中使用sed
或命令删除它。只有在 vi 编辑器中打开文件时replace
才能看到。^@
请建议。以下是我尝试使用 sed 的内容。
sed 's/^@/?/g' 文件名
解决方案
在 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)
推荐阅读
- sql - Grouping over the subquery in SQL on unique id
- java - Maven Compiler Error After Upgrading to JDK11 on Jenkins(Threading Issue?)
- python - 如何从文本中删除陌生单词
- c# - System.NullReferenceException Error C# ASP.NET
- regex - prerender.io via prerender-node middleware, blacklist hashbang
- java - 如何使用 shell_exec() 函数从 php 页面执行 java 命令?
- c# - 如何在没有死锁的情况下正确读取 c# 进程标准错误流?
- python - Pandas single level multiindex vs plain index
- javascript - Retrieving data from database - undefined index problem (ajax related problem)
- javascript - 使用 Firebase 测试 create-react-app