使用unix shell比较包含非ascii字符的文件内容的最佳方法

时间:2012-03-28 05:16:16

标签: bash shell sed awk

我有以下文件:

~$ od file.txt 
0000000 000012
0000001

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

你能推荐一种干净利落的方式吗?

3 个答案:

答案 0 :(得分:5)

使用cmp -s逐字节比较两个文件,不输出任何内容,只设置退出状态。

答案 1 :(得分:3)

如果您知道它们相似,

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

是一个穷人的咒语比较。

答案 2 :(得分:0)

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

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

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