Как я сравниваю два файла со сценарием оболочки?

Учитывая два файла, я хочу записать сценарий оболочки, который читает каждую строку из file1 и проверяет, находится ли это там в file2. Если строка не найдена, она должна произвести два файла, отличаются и выходят. Файлы могут содержать числа слов или что-либо. Например:

file1:

Hi!
1234
5678
1111
hello

file2:

1111
5678
1234
Hi!
hello

В этом случае два файла должны быть равными. если file2 имеет "привет!!!" вместо "привет" затем файлы отличаются. Я использую сценарий удара. Как я могу сделать это. Не важно, чтобы я сделал это во вложенном цикле, но это - то, что я думал, единственный путь.Спасибо за помощь.

9
задан 18.01.2011, 20:35

3 ответа

В ударе:

diff --brief <(sort file1) <(sort file2)
9
ответ дан 07.12.2019, 13:10

diff устанавливает его статус выхода, чтобы указать, являются ли файлы тем же или нет. Статус выхода доступен в специальной переменной $?. Можно подробно остановиться на ответе Ignacio этот путь:

diff --brief <(sort file1) <(sort file2) >/dev/null
comp_value=$?

if [ $comp_value -eq 1 ]
then
    echo "do something because they're different"
else
    echo "do something because they're identical"
fi
10
ответ дан 07.12.2019, 13:10

Должен также работать:

comm -3 file1 file2

Я думаю, что это - достаточно символов для ответа...

1
ответ дан 07.12.2019, 13:10

Теги

Похожие вопросы