sed

De la Wikipedia, enciclopedia liberă
Salt la: Navigare, căutare

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 utilitar UNIX 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ă.

Istorie[modificare | modificare sursă]

sed este una din primele comenzi UNIX pentru prelucrat text. A evoluat din comanda grep[2] și este folosit pe larg împreună cu AWK pentru prelucrări de text din linia de comandă sau prin intermediul programelor shell.

sed și AWK sunt deseori prezentați ca precursorii limbajului Perl, sintaxa s / / / prezentată mai jos a fost preluată în Perl fiind introdusă original în editorul ed.

Limbajul sed nu are variabile, iar structurile de control sunt primitive. Totuși, limbajul este considerat Turing-complete.[2] [3] Varianta GNU 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 din BSD. În ziua de azi, facilitatea elimină scripturile ed, de exemplu

sed -i 's/abc/def/' file

poate fi folosită în loc de

ed file
1,$ s/abc/def/
w
q

Notă: sed -i suprascrie fișierul original

Super-sed este o versiune extinsă a sed, care include suport pentru expresii regulate în formatul definit în Perl.

O altă variantă de sed este minised. Aceasta este precursoare versiunii GNU sed. Are avantajul că este foarte rapidă și consumă puțină memorie, fiind astfel ideală pentru sistemele embedded.


Utilizare[modificare | modificare sursă]

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țiile textvechi din linie vor fi înlocuite cu textnou

Î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


În UNIX, sed este folosit adeseori ca un filtru în succesiunea de comenzi:

generate_data | sed -e 's/x/y/g'

Exemplu de mai sus substituie literele x cu y în datele generate de programul generate_data.

Mai multe substituții sau comenzi pot fi puse împreună într-un fișiere, de exemplu subs.sed, și executate împreună folosind opțiunea -f

sed -f subst.sed NumeFișierIntrare > NumeFișierIeșire


Referințe[modificare | modificare sursă]


Legături externe[modificare | modificare sursă]


 v  d  m  Programe în linia de comandă pentru Unix (mai multe)
Management 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
Management de procese: at | chroot | cron | exit | kill | killall | nice | pgrep | pidof | pkill | ps | pstree | sleep | time | top | wait
Management 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
Programare Shell: 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