Jeg har et Visual Studio-prosjekt som utvikles lokalt. Kodefilene må distribueres til en ekstern server. Det eneste problemet er URL-adressene de inneholder, som er hardkodet.
Prosjektet inneholder URL-er som ?page=one. For at lenken skal være gyldig på serveren, må den være /page/one .
Jeg har bestemt meg for å erstatte alle URL-er i kodefilene mine med sed før distribusjon, men jeg sitter fast på skråstreker.
Jeg vet at dette ikke er en pen løsning, men det er enkelt og vil spare meg for mye tid. Totalt antall strenger jeg må erstatte er mindre enn 10. Totalt antall filer som må sjekkes er ~30.
Nedenfor er et eksempel som beskriver situasjonen min:
Kommandoen jeg bruker:
sed -f replace.txt < a.txt > b.txt
replace.txt som inneholder alle strengene:
s/?page=one&/pageone/g
s/?page=two&/pagetwo/g
s/?page=three&/pagethree/g
a.txt:
?page=one&
?page=two&
?page=three&
Innholdet i b.txt etter at jeg har kjørt sed-kommandoen:
pageone
pagetwo
pagethree
Hva jeg vil at b.txt skal inneholde:
/page/one
/page/two
/page/three
Det enkleste er å bruke et annet skilletegn i søke-/erstatningslinjene, f.eks:
s:?page=one&:pageone:g
Du kan bruke et hvilket som helst tegn som skilletegn som ikke er en del av noen av strengene. Du kan også bruke en backslash som skilletegn:
s/\//foo/
Som vil erstatte /
med foo
. Du bør bruke backslash i tilfeller der du ikke vet hvilke tegn som kan forekomme i erstatningsstrengene (for eksempel hvis de er skallvariabler).