sed în Linux / Bash

Procesare și filtrare text POSIX / GNU Sed

Editor de flux (stream editor) pentru transformarea, înlocuirea și filtrarea automată a textului.

Sintaxă comandă
sed [opțiuni] 'instrucțiuni' [fișier...]

Ce face sed

Comanda sed citește textul linie cu linie, aplică regulile definite (înlocuiri de expresii, ștergeri de rânduri, inserări) și trimite rezultatul direct către ieșirea standard.

Cea mai cunoscută utilizare a comenzii este comanda de substituție s/căutat/înlocuitor/g. Cu opțiunea -i (in-place), modificările sunt salvate direct în fișierul original fără a fi nevoie de un fișier intermediar.

Opțiuni și argumente

Opțiune / Parametru Descriere
-i, --in-place Modifică direct fișierul pe disc în loc de a afișa rezultatul în consolă.
-e INSTRUCȚIUNE Permite specificarea mai multor comenzi sed într-un singur apel.
-n, --quiet Nu afișează automat fiecare linie; se folosește de obicei împreună cu comanda de afișare p.
s/vechi/nou/g Substituie fiecare apariție a textului ‘vechi’ cu ‘nou’ (steagul g înseamnă global pe toată linia).

Exemple

Exemplul 1: Înlocuirea unui cuvânt pe fiecare rând

Schimbăm protocolul HTTP cu HTTPS pe toate liniile.

echo "Site: http://exemplu.ro si http://dexblog.ro" | sed 's/http:/https:/g'

Rezultat

Site: https://exemplu.ro si https://dexblog.ro

Exemplul 2: Ștergerea liniilor goale

Comanda /^$/d șterge toate liniile care nu conțin niciun caracter.

cat << 'EOF' > date.txt
Linia 1

Linia 2
EOF
sed '/^$/d' date.txt

Rezultat

Linia 1
Linia 2

Greșeli frecvente

  • Uitarea steagului g la sfârșitul comenzii de substituție (fără g, se înlocuiește doar prima apariție de pe fiecare linie).
  • Diferențele de sintaxă pentru -i între GNU sed (pe Linux: sed -i) și BSD sed (pe macOS: sed -i '').

Comenzi înrudite

  • awk: Limbaj de procesare a textului structurat pe coloane, ideal pentru rapoarte și extragere de date.
  • grep: Caută linii care se potrivesc cu un tipar sau o expresie regulată în fișiere.
  • tr: Translatează, șterge sau comprimă caractere specifice din fluxul de intrare standard.
  • cut: Decupează secțiuni, coloane sau intervale de caractere din fiecare linie de text.