Sed este o comandă utilizată pentru transformarea secvențelor de text. Comanda citește fișierele de intrare linie cu linie, apoi modifică fiecare linie corespunzător regulilor specificate într-un limbaj simplu, și afișează linia. Inițial, programul a fost creat ca un utilitarUNIX de către Lee E. McMahon la Bell Labs[1] între 1973 și 1974 dar acum este disponibil pe aproape orice sistem de operare care suporta o linie de comandă.
sed este una din primele comenziUNIX pentru prelucrat text. A evoluat din comandagrep[2] și este folosit pe larg împreună cuAWK pentru prelucrări de text din linia de comandă sau prin intermediul programelor shell.
sed șiAWK sunt deseori prezentați ca precursorii limbajuluiPerl, sintaxas / / / prezentată mai jos a fost preluată înPerl fiind introdusă original în editoruled.
Limbajul sed nu are variabile, iar structurile de control sunt primitive. Totuși, limbajul este considerat Turing-complete.[2][3]VariantaGNU a limbajului sed adaugă o serie nouă de elemente de limbaj. Cea mai bine cunoscută este modificarea pe loc a fișierelor text folosind rezultatul rulării programului. Această facilitate a fost mai târziu preluată și de versiunea sed dinBSD. În ziua de azi, facilitatea elimină scripturileed, de exemplu
sed -i 's/abc/def/' file
poate fi folosită în loc de
ed file1,$ s/abc/def/wq
Notă:sed -i suprascrie fișierul original
Super-sed este o versiune extinsă a sed, care include suport pentru expresii regulate în formatul definit înPerl.
O altă variantă de sed esteminised. Aceasta este precursoare versiuniiGNU sed. Are avantajul că este foarte rapidă și consumă puțină memorie, fiind astfel ideală pentru sistemele embedded.
Următorul exemplu arată o utilizare tipică a sed, opțiunea-e indică faptul că urmează o expresie sed:
sed -e 's/textvechi/textnou/g' NumeFișierIntrare > NumeFișierIesire
s de la începutul expresiei înseamnă substituție,g de la sfârșit înseamnă global ceea ce înseamnă că toate aparițiiletextvechi din linie vor fi înlocuite cutextnou
În afară de substituții mai sunt posibile și alte modalități de procesare. Următorul exemplu șterge liniile goale sau liniile care conțin doar spatii:
sed -e '/^ *$/d' NumeFișierIntrare
ÎnUNIX, sed este folosit adeseori ca un filtru în succesiunea de comenzi:
generate_data | sed -e 's/x/y/g'
Exemplu de mai sus substituie literelex cuy în datele generate de programulgenerate_data.
Mai multe substituții sau comenzi pot fi puse împreună într-un fișiere, de exemplusubs.sed, și executate împreună folosind opțiunea-f
sed -f subst.sed NumeFișierIntrare > NumeFișierIeșire
| v • d • m Programe înlinia de comandă pentruUnix (mai multe) | |||
| Gestionare de fișiere: | cat |cd |chmod |chown |chgrp |cksum |cmp |cp |du |df |file |fsck |ln |ls |lsof |mkdir |mount |mv |pwd |rm |rmdir |split |touch | ||
| Gestionare de procese: | at |chroot |cron |exit |kill |killall |nice |pgrep |pidof |pkill |ps |pstree |sleep |time |top |wait | ||
| Gestionare de utilizator/mediu: | env |finger |id |mesg |passwd |su |sudo |uname |uptime |w |wall |who |whoami |write | ||
| Procesare text: | awk |comm |cut |ed |ex |fmt |head |iconv |join |less |more |paste |sed |sort |tac |tail |tr |uniq |wc |xargs | ||
| ProgramareShell: | basename |echo |expr |false |printf |test |true |unset | Imprimare: lp | |
| Communicații: inetd |netstat |ping |rlogin |traceroute | Căutare: find |grep |strings | Diverse: banner |bc |cal |dd |man |size |yes | |