Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 使用unix shell比较包含非ascii字符的文件内容的最佳方法_Bash_Shell_Sed_Awk - Fatal编程技术网

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

Bash 使用unix shell比较包含非ascii字符的文件内容的最佳方法,bash,shell,sed,awk,Bash,Shell,Sed,Awk,我有以下文件: ~$ od file.txt 0000000 000012 0000001 我希望能够在bash脚本中确保文件包含这些内容。 我希望避免使用perl,并希望使用标准的unix工具,包括od/sed/awk/tr等 你能推荐一种干净漂亮的方法吗?如果你知道它们相似 diff <(xxd file1.txt) <(xxd file2.txt) 是一个穷人的最爱。如果你知道他们是相似的 diff <(xxd file1.txt) <(xxd file2.t

我有以下文件:

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


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

如果你知道它们相似

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

是一个穷人的最爱。

如果你知道他们是相似的

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

是穷人的hexedit比较。

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

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

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

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

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

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

if [ "`hexdump -e '"%02x"' foo`" = 'deadd00d' ]; then
  # Right file content.
else
  # File differs.
fi
当然,您可能希望限制hextump的输出,以避免输入文件过大的问题