Kommentarer
- tldp.org/LDP/abs/html/x23170.html
- grymoire.com/Unix/Sed.html
- Detta bör inte markeras som en duplikat eftersom det andra svaret som refereras till inte ' t visar dig hur du byter ut på en enda fil, medan det här svaret gör det. Antingen det eller integrera det här svaret i det där
Svar
sed är s tream ed itor , genom att du kan använda | (pipe) för att skicka standardströmmar (STDIN och STDOUT specifikt) genom sed och ändra dem programmatiskt i farten, vilket gör det till ett praktiskt verktyg i Unix-filosofitraditionen; men kan också redigera filer direkt med -i -parametern som nämns nedan.
Tänk på följande :
sed -i -e "s/few/asd/g" hello.txt
s/ används för att s ersätta det hittade uttrycket few med asd:
De få, de modiga.
The asd , de modiga.
/g står för ”global”, vilket betyder att göra detta för hela linjen. Om du slutar med /g (med s/few/asd/ måste det alltid finnas tre snedstreck oavsett vad) och few visas två gånger på samma rad, endast den första few ändras till asd:
De få män, de få kvinnorna, de modiga.
De asd män, de få kvinnor, de modiga.
Detta är användbart under vissa omständigheter, som att ändra specialtecken i början av rader (till exempel att ersätta de större symboler som vissa använder för att citera tidigare material i e-posttrådar med en vågrät flik medan du lämnar en citerad algebraisk ojämlikhet senare i raden orörd), men i ditt exempel där du anger att var som helst few ska den ersättas , se till att du har den /g.
Följande två alternativ (flaggor) kombineras till en, :
-i alternativet används för att redigera i n plats på filen hello.txt.
-e alternativet anger e xpression / kommando som ska köras, i det här fallet s/.
Obs: Det är viktigt att du använder -i -e för att söka / ersätta. Om du gör -ie skapar du en säkerhetskopia av varje fil med bokstaven ”e”.
Kommentarer
- Jag ' m använder OS X, för vad det ' är värt, men det här är felet jag får: sed: 1: " hello.txt ": ogiltig kommandokod.
- En redigering föreslogs för att lägga till -e flagga till sed. Flaggan -e är valfri så länge kommandot att köra visas först, det finns inte en kommandofil och ett kommando-arg, och det finns bara ett kommando.
- @roo på mac os x, med
-ieJag får den filenfooär säkerhetskopierad somfooe. - det här kommandot ger mig en extra fil som slutar med -e, varför ??: index.html-e sed -i -e ' s / n / d / g ' index.html
- På Mac skapar -i -e en ny fil med -e bifogad namnet. Detta verkar fungera i bash: sed " -i " " " " -e " " s / få / asd / g " " någon fil.xml "
Svar
sed -i "s/fea/asd/g" hello.txt
g: Global
s: ersättning
-i : realtid fungerar med filen plats
Kommentarer
- När det gäller symlänkar är det bra att lägga till
--follow-symlinksannars-iförvandlas symlink till en (redigerad) kopia av filen.