Chciałbym móc użyć diff i poprawki, aby zapisać nowe linie do pliku. Aby wyjaśnić, co mam na myśli:
Oryginalny plik: test1.repo
wyklucz = mongo *
exclude = sqlite *
exclude = postgresql *
Nowy plik: test2.repo
wyklucz = mongo *
exclude = postgresql *
wyklucz = mysql *
Więc uruchamiam polecenie, diff -u test1.repo test2.repo > repo.patchaby znaleźć różnice, dość proste. Patrząc na repo.patchwłaśnie utworzony plik, widzę wynik:
wyklucz = mongo *
-exclude = sqlite *
exclude = postgresql *
+ exclude = mysql *
Jeśli użyję tej łatki w takim stanie, zostanie ona nadpisana tym, co faktycznie zawiera tylko dane, które mam test2.repo. Czy istnieje sposób, aby łatka zapisywała tylko nowe wiersze ( cokolwiek zaczynające się od znaku + )? Chciałbym dodać wiersze do oryginalnego repozytorium, ale nie niszczyć żadnych dostosowań, które już zrobili w swoim pliku.
--jakiegoś powodu. Osobiście po prostu ręcznie edytuję łatkę, aby rozwiązać konflikty.
cat <(head -n 1 repo.patch) <(grep -ve '^-' repo.patch) | patchaby rozwiązać problem wskazany przez @frostschutz. Ale przy tych zmodyfikowanych plikach łatek pojawia się błąd patch: **** malformed patch at line 9:(to jest EOF), ponieważ musisz także zmodyfikować @@ -1,4 +1,6 @@linie ?!
sort -u test1.repo test2.repomoże również działać.
sed 's/^-\([^-]\{2\}\)/ \1/'?