【问题标题】:best way to compare file contents containing non ascii chars using unix shell使用 unix shell 比较包含非 ascii 字符的文件内容的最佳方法
【发布时间】:2012-03-28 05:16:16
【问题描述】:

我有以下文件:

~$ od file.txt 
0000000 000012
0000001

而且我希望能够在 bash 脚本中确保文件具有这些内容。 我想避免使用 perl,并想使用标准的 unix 工具,包括 od/sed/awk/tr 等。

你能推荐一个漂亮干净的方法吗?

【问题讨论】:

    标签: bash shell sed awk


    【解决方案1】:

    使用cmp -s逐字节比较两个文件,什么都不输出,只设置退出状态。

    【讨论】:

      【解决方案2】:

      如果你知道它们相似,

      diff <(xxd file1.txt) <(xxd file2.txt)
      

      是穷人的十六进制比较。

      【讨论】:

        【解决方案3】:

        如果您处理小文件并希望确保文件内容等于某些预定义的非文本值,并且您不想将文件与某些模板进行比较,您可以使用以下内容:

        if [ "`hexdump -e '"%02x"' foo`" = 'deadd00d' ]; then
          # Right file content.
        else
          # File differs.
        fi
        

        当然,您可能希望限制hexdump 的输出以避免输入文件过大的问题。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多