我有一个文本文件,其中包含不需要的空字符(ASCII NUL,\0)。当我尝试用vi查看它时,我看到了^@符号,它们以普通文本插入。我怎么能够:

  • 标识文件中的哪几行包含空字符?我尝试对\0\x0进行grepping,但这没有用。
  • 删除空字符?在文件上运行strings可以清除它,但是我只是想知道这是否是最佳方法吗?
  • 最佳答案

    我会使用tr:

    tr < file-with-nulls -d '\000' > file-without-nulls
    

    如果您想知道命令参数中间的输入重定向是否有效,则可以。实际上,大多数Shell都会在命令行中的任何位置识别并处理I / O重定向(<>…)。

    09-25 21:14