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.
Lasă un răspuns