Använda VI att ersätta en sträng i flera filer

Någon gång kanske du vill byta ut förekomster av en sträng över flera filer.

Det finns ett enkelt sätt att göra det med hjälp av editorn vi.

Detta exempel illustrerar kraften i vi:

Anta att du har 100. Html-filer och du vill ersätta förekomsten av strängen '2007 'med '2008'.

Som sådan, kör du följande på din fråga:

VI *. html

Detta kommer att öppna alla filer som slutar med '. Html "i din nuvarande katalog. Då utfärda följande kommando:

: Argdo% s/2007/2008/g | WQ

Det är allt! Ovanstående kommando kommer slinga över varje fil och ersätter (%) i Word 2007 med ordet 2008 globalt (g) så det kommer att spara varje fil (w) och ut ur den (q).

Observera att strängen att hitta och strängen som ska användas för ersättning kan ersättas med reguljära uttryck. Till exempel refererar ett cirkumflex (^) till början av en linje hänvisar dollartecken ($) till dess slut, etc. Så om vi skulle byta ut alla rader som börjar med 'prov' och slutar med "test", en skulle kunna använda:

: Argdo% s / ^ prov .* testa $ / g | wc

där .* matchar något i mellan de två strängen.

Observera också att du kan göra sök och ersätt åtgärder utan hänsyn till fallet (dvs att en sökning på "ord" matchar "ord"). För den delen, helt enkelt ersätta "/ g 'med' / GI"

4 kommentarer

mike 23 aug 2008 kl 12:24

Det är cirkumflex, inte morot!

admin 29 aug 2008 kl 03:43

Måste ha varit att tänka på mat när du skriver det :)
Skål

Jens 16 juli 2010 kl 20:35

Tack för detta tips, du räddade mig en massa arbete med det.

Än så mycket 27 sep 2010 kl 13:49

Thanx mycket, hjälpte det mig också.

Jag har en kommentar, för relativt litet antal ersättare, vilket ledde till att ersätta skulle också kunna vara användbart.

: Argdo% s / SEARCH_STRING / replace_string / GC | WQ

med ytterligare ett "c" för "bekräftelse"

Tack igen :)

Lämna en kommentar

Din kommentar