Патчи работают не так. Утилита patch
применяет исправление, созданное утилитой diff
, запущенной на двух существующих версиях файла или набора файлов. Две версии статичны, и применение патча преобразует одну в другую (возможны оба направления).
Чтобы просто добавить строки файла ( lines.in
), которые полностью отсутствуют в другом файле ( file.dat
), вы можете использовать comm
] следующим образом ( bash
и ksh93
):
comm -23 <( sort lines.in ) <( sort file.dat ) >>file.dat
Добавленные строки будут отсортированы.
Решение, сохраняющее порядок строк в lines.in
:
grep -v -x -F -f file.dat lines.in >>file.dat
Это будет использовать grep
, чтобы найти все строки в lines.in
который не существует ( -v
) в file.dat
( -f file.dat
), и добавьте их в file.dat
. Полные строки сравниваются как фиксированные ( -x -F
).