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
).