Ved hjelp av ' sed ' for å finne og erstatte [duplikat]

Dette spørsmålet har allerede svar her :

Kommentarer

Svar

sed er s tream ed itor , ved at du kan bruke | (pipe) til å sende standardstrømmer (STDIN og STDOUT spesifikt) gjennom sed og endre dem programmatisk på farten, noe som gjør det til et praktisk verktøy i Unix-filosofitradisjonen; men kan også redigere filer direkte ved hjelp av -i -parameteren som er nevnt nedenfor.
Vurder følgende :

 sed -i -e "s/few/asd/g" hello.txt  

s/ brukes til å s erstatte det funnet uttrykket few med asd:

De få, de modige.


The asd , de modige.

/g står for «global», som betyr å gjøre dette for hele linjen. Hvis du slutter med /g (med s/few/asd/, må det alltid være tre skråstrek uansett) og few vises to ganger på samme linje, bare den første few blir endret til asd:

De få mennene, de få kvinnene, de modige.


De asd mennene, de få kvinnene, de modige.

Dette er nyttig i noen tilfeller, som å endre spesialtegn i begynnelsen av linjer (for eksempel å erstatte de større symbolene enn noen bruker for å sitere tidligere materiale i e-posttråder med en horisontal fane mens du etterlater en sitert algebraisk ulikhet senere på linjen uberørt), men i eksempelet ditt der du angir at hvor som helst few, skal den erstattes , sørg for at du har /g.

Følgende to alternativer (flagg) kombineres til ett, :

-i alternativet brukes til å redigere i n sted på filen hello.txt.

-e alternativet indikerer e xpression / kommando som skal kjøres, i dette tilfellet s/.

Merk: Det er viktig at du bruker -i -e for å søke / erstatte. Hvis du gjør -ie, lager du en sikkerhetskopi av hver fil med bokstaven «e» vedlagt.

Kommentarer

  • Jeg ' bruker OS X, for hva ' er verdt, men dette er feilen jeg får: sed: 1: " hallo.txt ": ugyldig kommandokode.
  • En redigering ble foreslått for å legge til -e flagg til sed. Flagget -e er valgfritt så lenge kommandoen for å utføre vises først, det er ikke en kommandofil og en kommando-arg, og det er bare en kommando.
  • @roo på mac os x, ved hjelp av -ie Jeg får den filen foo er sikkerhetskopiert som fooe.
  • denne kommandoen gir meg en ekstra fil som slutter med -e, hvorfor ??: index.html-e sed -i -e ' s / n / d / g ' index.html
  • På Mac oppretter -i -e en ny fil med -e lagt til navnet. Dette ser ut til å fungere i bash: sed " -i " " " " -e " " s / few / asd / g " " somfil.xml "

Svar

sed -i "s/fea/asd/g" hello.txt 

g: Global

s: erstatning

-i : sanntid fungerer med filen sted

Kommentarer

  • Når du arbeider med symlinker, er det bra å legge til --follow-symlinks ellers vil -i gjøre symlink til en (redigert) kopi av filen.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *