Linux Søk og erstatt en streng i en fil

Linux Søk og erstatt en streng i en fil


Skifte ord i en tekstfil kan gjøres på forskjellige måter innenfor operativsystemet Linux. Den "sed" kommando og Perl programmeringsspråk er to metoder som bruker lignende syntaks innenfor kommandoene. Begge metodene er brukt fra Linux kommandolinjen. Du kan også angi en eksakt streng eller et vanlig uttrykk i begge metodene. Et regulært uttrykk er en måte å bruke jokertegn (spesialtegn) for mønstergjenkjenning.

Sed

Sed er en strøm redaktør for Unix og Linux operativsystemer. Den kan brukes til å manipulere tekst på forskjellige måter, blant annet å lete etter og å erstatte strenger innenfor tekstfiler. Den grunnleggende format for substitusjon med sed er:

sed -i "s / find_string / replace_string / g" filnavn

Den "-i" alternativet sier å redigere teksten inline. Med andre ord, blir filen redigert uten å skape en andre fil. Den "s / find_string / replace_string / g" -delen sier til erstatning ( "s") på "replace_string" for "find_string" globalt ( "g"). Den siste delen av kommandoen ( "filnavn") er navnet på filen som skal redigeres.

Hvis du ønsker å beholde en kopi av den opprinnelige filen, kan du utelater "-i" og spesifisere en output fil som:

sed "s / find_string / replace_string / g" filnavn> utgang

Hvis du utelater "g" delen av kommandoen, sed vil erstatte bare den første forekomsten av "find_string" og stoppe.

Perl

Perl er et programmeringsspråk som kan brukes fra kommandolinjen for å manipulere tekstfiler. Perl ble skapt av Larry Wall å manipulere ASCII tekstrapporter effektivt.

Perl fremgangsmåte for å lete etter og å erstatte strenger er lik den sed kommandoen. Formatet er som følger:

perl -pi -e 's / find_string / replace_string / g' filnavn.

Den "p" alternativet sier til sløyfe gjennom søk-og-erstatt-kode. Dette er nødvendig for søk og erstatt for å bli behandlet på riktig måte. Som med sed, sier "-i" for å behandle filen inline. Hvis du fjerner dette alternativet, må du angi en output fil. Perl kan du angi en backup-fil med "-i" alternativet ved å skrive backup forlengelse etter "i" (for eksempel "i.bak"). Den "-e" alternativet sier for å utføre kommandoen "s / finne / erstatte / g." Igjen, fjerne "g" delen av kommandoen vil stoppe erstatte prosessen etter å finne den første forekomsten av søkestrengen.