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 "

4 Reacties

mike 23 augustus 2008 om 12:24

Het is dakje, geen wortel!

admin 29 augustus 2008 om 03:43

Moet zijn na te denken over eten tijdens het typen het :)
Proost

Jens 16 juli 2010 om 20:35

Bedankt voor deze tip, je hebt me gered een heleboel werk met dat.

Dan je heel veel 27 september 2010 om 13:49

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 :)

Plaats een reactie

Je reactie