Учитывая два файла, я хочу написать скрипт оболочки, который читает каждую строку из файла file1 и проверяет, есть ли он в файле file2. Если строка не найдена, она должна вывести два разных файла и выйти. Файлы могут содержать слова чисел или что-нибудь. Например :
файл1:
Hi!
1234
5678
1111
hello
file2:
1111
5678
1234
Hi!
hello
В этом случае два файла должны быть равны. если file2 имеет "привет !!!" вместо «привет» файлы отличаются. Я использую скрипт bash. Как я могу это сделать. Это не важно, что мне нужно делать это во вложенном цикле, но это то, что я думал, это единственный способ. Спасибо за вашу помощь.
sort
не заботится о точном содержании, если вы не скажете это.--brief
и добавить параметры формата, например-u
.diff
устанавливает состояние выхода, чтобы указать, являются ли файлы одинаковыми или нет. Статус выхода доступен в специальной переменной$?
. Вы можете расширить ответ Игнасио следующим образом:источник
if diff ... >/dev/null
без скобок и переменных.Добавление этого, потому что я думаю, что [[]] && || конструкция довольно аккуратна:
источник
Также должно работать:
Я думаю, что символов достаточно для ответа ...
источник
Хотя
diff
это и очень хороший ответ, я бы, вероятно, использовалcmp
вместо этого именно тот, который предназначен для сравнения двух файлов между байтами.https://linux.die.net/man/1/cmp
Из-за этого у него есть дополнительный бонус - возможность сравнивать двоичные файлы.
Я уверен, что это быстрее, чем использовать,
diff
хотя я лично не проверял это.источник