Kommentarer
- tldp.org/LDP/abs/html/x23170.html
- grymoire.com/Unix/Sed.html
- Dette bør ikke merkes som et duplikat fordi det andre svaret det refereres til ikke ' t viser deg hvordan du bytter ut på en enkeltfil, mens dette svaret gjør det. Enten det eller integrer dette svaret i det
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 filenfoo
er sikkerhetskopiert somfooe
. - 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.