Mulți oameni știu cum să folosească bază sed:

sed 's/hello/bonjour/' greetings.txt echo "hi there" | sed 's/hi/hello/' 

va acoperi 80% din ta sed utilizare. Acest post este despre celelalte 20%. Tegândești ca o continuare cursul după sed

Astfel încât să puteți schimba fluxuri de conducte de ieșire la sed. Ce se întâmplă dacă doriți să schimbațifișierul în loc?

Înlocuirea pe loc

sed nave cu -i pavilion., Hai să consulte man sed:

-i extension Edit files in-place, saving backups with the specified extension. 

Să încercați să-l:

Rețineți că pe sistemele Linux, un spațiu după -i ar putea provoca o eroare, deci in loc -i .bak, puteți încerca -i.bak.deci, conținutul fișierului original este salvat într-un fișier nou numit .bak,iar noua versiune modificată este în original greetings.txt. Acum tot ce trebuie să facem este:

rm greetings.txt.bak 

și am schimbat fișierul în loc., Acum ești toastul Oficiului, cântat de barzi.

hai Să l33t

Stai, mai e în man intrare pentru sed -i:

If a zero-length extension is given, no backup will be saved. It is not recommended to give a zero-length extension when in-place editing files, as you risk corruption or partial content in situations where disk space is exhausted, etc. 

lungime Zero extensie, nu-i așa? Hai sa folosim original greetings.txt fișier înainte de a schimbat-o:

-i '' (sau, în Linux, doar -i) spune sed pentru a utiliza un zero-lengthextension pentru backup., O extensie cu lungime zero înseamnă că copia de rezervă areacelași nume ca noul fișier, deci nu este creat niciun fișier nou. Se elimină necesitatea de a rularm după ce a făcut o înlocuire în loc.

nu am avut probleme de spațiu pe disc cu -i ''. Dacă ești îngrijorată pentru man pagina de avertizare, puteți folosi -i .bak tehnica am menționat în secțiunea anterioară.

Găsi și înlocui în mai multe fișiere

Ne place sed atât de mult încât îl folosim în replace script., Funcționează astfel:

replace foo bar **/*.rb 

primul argument este șirul pe care îl găsim. Al doilea este șirul cu care înlocuim. Al treilea este un model care se potrivește cu lista de fișiere din interiorpe care dorim să ne restricționăm căutarea.