Zmuszenie do używania CVS dla bieżącego klienta i zmiana adresu dla zdalnego repozytorium. Jedynym sposobem, w jaki mogę zmienić zdalny adres w moim lokalnym kodzie, jest wyszukiwanie rekurencyjne i zamiana.
Jednak przy użyciu komendy sed spodziewałbym się, że zadziała:
find ./ -type f -exec sed -i "s/192.168.20.1/new.domain.com/" {} \;
Otrzymuję błąd dla każdego pliku:
sed: 1: ".//file/path ...": invalid command code .
Próbowałem uciec przed kropkami w meczu sed / zamianie, ale to nic nie rozwiązuje.
RE error: illegal byte sequence
na MacOS.sed -i '' 's/blah/xx/g'
-e
po-i
wykonanejsed
kopii zapasowej wszystkie moje pliki w ten sposób: „foo.txt” -> „foo.txt-e”. Oczywiście chciałem raczej-i ''
, tzn. Nie tworzyć kopii zapasowych zmienionych plików.-i -e
połączeniu z tymfind
wiele plików kończyło się na-e-e-e-e-e-e-e
.Po prostu zapomniałeś podać argument
-i
. Po prostu zmień-i
na-i ''
.Oczywiście oznacza to, że nie chcesz tworzyć kopii zapasowej plików; w przeciwnym razie podaj swoje rozszerzenie wyboru, np
-i .bak
.źródło
W OS X nic nie pomaga, aby słaba wbudowana wersja stała się wystarczająca. Rozwiązaniem jest:
A następnie użyj gsed zamiast sed, który będzie działał zgodnie z oczekiwaniami.
źródło
Prawdopodobnie Twoja nowa domena zawiera
/
? Jeśli tak, spróbuj użyć separatora inny niż/
wsed
np#
,,
etc.Dobrze byłoby również zawrzeć
s///
pojedynczy cytat zamiast podwójnego cytatu, aby uniknąć substytucji zmiennych lub innych nieoczekiwanych zachowańźródło