лучший способ сравнить содержимое файла, содержащее символы не ascii, используя оболочку unix - PullRequest
1 голос
/ 28 марта 2012

У меня есть следующий файл:

~$ od file.txt 
0000000 000012
0000001

И я хотел бы иметь возможность в bash-скрипте убедиться, что файл имеет это содержимое.Я хотел бы избежать Perl и хотел бы использовать стандартные инструменты Unix, включая od / sed / awk / tr и т.д.

Ответы [ 3 ]

5 голосов
/ 28 марта 2012

Используйте cmp -s для сравнения двух файлов побайтно, ничего не выводя, только устанавливая статус выхода.

3 голосов
/ 28 марта 2012

Если вы знаете, что они похожи,

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

- шестнадцатеричное сравнение бедняков.

0 голосов
/ 28 марта 2012

Если вы имеете дело с небольшими файлами и хотите быть уверены, что содержимое файла равно некоторому предопределенному нетекстовому значению, а также вы не хотите сравнивать файлы с каким-либо шаблоном, вы можете использовать что-то вроде этого:

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

Конечно, вы можете ограничить вывод hexdump, чтобы избежать проблем со слишком большими входными файлами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...