Não é assim que os patches funcionam. O utilitário patch aplica um patch criado pelo utilitário diff executado em duas versões existentes de um arquivo ou conjunto de arquivos. As duas versões são estáticas e a aplicação do patch transformará uma na outra (ambas as direções são possíveis).
Para anexar apenas as linhas de um arquivo ( lines.in ) que estão completamente ausentes em outro arquivo ( file.dat ), você pode usar comm assim ( bash e ksh93 ):
comm -23 <( sort lines.in ) <( sort file.dat ) >>file.dat
As linhas adicionadas serão classificadas.
Uma solução que preserva a ordenação das linhas em lines.in :
grep -v -x -F -f file.dat lines.in >>file.dat
Isso usará grep para localizar todas as linhas em lines.in que não ( -v ) existem em file.dat ( -f file.dat ) e anexá-las a file.dat . As linhas completas são comparadas como strings fixas ( -x -F ).