Met behulp van vi om een string te vervangen in meerdere bestanden
Soms wilt u wellicht voorkomen van een string over meerdere bestanden te vervangen.
Er is een makkelijke manier om dat te doen met de hulp van de vi editor.
Dit voorbeeld illustreert de kracht van vi:
Stel je hebt 100. Html-bestanden, en u wilt het optreden van de string '2007 vervangen door 'met '2008'.
Als zodanig, voer het volgende op uw prompt:
vi *. html
Dit opent alle bestanden die eindigen met '. Html' in uw huidige werk directory. Vervolgens het volgende commando:
: Argdo% s/2007/2008/g | wq
Dat is het! Het bovenstaande commando zal lus over elk bestand, vervangen (%) het woord 2007 met het woord wereldwijd 2008 (g) dan zal elk bestand op te slaan (w) en het verlaten van het (q).
Merk op dat de snaar te vinden en de string moet worden gebruikt voor vervanging kan worden vervangen door reguliere expressies. Bijvoorbeeld, een dakje (^) verwijst naar het begin van een lijn, het dollarteken ($) verwijst naar het einde, etc. Dus als we op een regel die begint met een 'monster' en eindigend met 'test' vervangen, een zou kunnen gebruiken:
: Argdo% s / ^ .* monster test $ / g | wc
waar .* komt overeen met iets tussen de twee string.
Merk ook op dat u de zoek en vervang actie zonder aanzien van het geval (dat wil zeggen een zoektocht naar 'woord' is 'woord' wedstrijd) te doen. Wat dat betreft, gewoon vervang '/ g' met '/ gi "

Het is dakje, geen wortel!
Moet zijn na te denken over eten tijdens het typen het
Proost
Bedankt voor deze tip, je hebt me gered een heleboel werk met dat.
Thanx veel, het hielp me ook.
Ik heb een opmerking, voor relatief klein aantal vervangingen, vragen om te vervangen zou ook nuttig zijn.
: Argdo% s / SEARCH_STRING'END_SPAN / replace_string / gc | wq
met een extra 'c' voor 'bevestiging'
Nogmaals bedankt