Dipaksa menggunakan CVS untuk klien saat ini dan alamat diubah untuk repo jarak jauh. Satu-satunya cara saya dapat menemukan untuk mengubah alamat jarak jauh dalam kode lokal saya adalah pencarian dan penggantian rekursif.
Namun, dengan perintah sed saya berharap untuk bekerja:
find ./ -type f -exec sed -i "s/192.168.20.1/new.domain.com/" {} \;
Saya mendapatkan kesalahan untuk setiap file:
sed: 1: ".//file/path ...": invalid command code .
Saya sudah mencoba untuk melarikan diri dari periode dalam pertandingan sed / penggantian tetapi itu tidak menyelesaikan apa pun.
RE error: illegal byte sequence
pada MacOS.sed -i '' 's/blah/xx/g'
-e
setelah-i
membuatsed
cadangan semua file saya dengan cara ini: "foo.txt" -> "foo.txt-e". Jelas yang saya inginkan sebenarnya-i ''
, yaitu jangan membuat cadangan file yang diubah.-i -e
dikombinasikan denganfind
menghasilkan banyak file yang berakhiran-e-e-e-e-e-e-e
.Anda lupa memberikan argumen kepada
-i
. Ubah saja-i
ke-i ''
.Tentu saja itu berarti Anda tidak ingin file Anda dicadangkan; jika tidak, berikan ekstensi pilihan Anda, seperti
-i .bak
.sumber
Pada OS X tidak ada yang bisa membantu untuk menjadi memadai. Solusinya adalah:
Dan kemudian gunakan gsed bukan sed, yang hanya akan berfungsi seperti yang diharapkan.
sumber
Mungkin domain baru Anda berisi
/
? Jika demikian, coba gunakan pemisah selain/
dised
, mis .#
,,
Dll.Akan lebih baik untuk menyertakan
s///
dalam tanda kutip tunggal daripada tanda kutip ganda untuk menghindari penggantian variabel atau perilaku tak terduga lainnyasumber