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的输出,以避免输入文件过大的问题