Porady Admina: sed

W piątej części cyklu Porady Admina zajmiemy się programem sed.

Sed to edytor do filtrowania/przekształcania tekstu. Program sed odczytuje dane z wyszczególnionych plików lub ze standardowego wejścia, jeśli żadne pliki nie zostały określone, dokonuje zmian edycyjnych zgodnie z listą poleceń oraz zapisuje wyniki do standardowego wyjścia.

Polecenie SED oznacza edytor strumieniowy (Stream EDitor) i może wykonywać wiele funkcji na plikach, takich jak: wyszukiwanie, znajdowanie i zastępowanie, wstawianie lub usuwanie. Korzystając z SED, możesz edytować pliki nawet bez ich otwierania, co jest znacznie szybszym sposobem na znalezienie i zastąpienie czegoś w pliku niż najpierw otwarcie tego pliku w edytorze tekstu, a następnie jego edycja.

Składnia:

sed OPCJE... [SKRYPT] [PLIK WEJŚCIA...]

Opcje:
-n, –quiet, –silent : Pomiń automatyczne drukowanie przestrzeni wzoru
-e script, –expression=script : Dodaj skrypt 'script’ do poleceń, które mają zostać wykonane
-f script-file : Dodaj zawartość pliku 'script-file’ do poleceń, które mają zostać wykonane
–follow-symlinks : Podążaj za dowiązaniami symbolicznymi podczas przetwarzania w miejscu
-r, –regexp-extended : Użyj w skrypcie rozszerzonych wyrażeń regularnych
-s, –separate : Traktuj pliki jako oddzielne, a nie jako pojedynczy ciągły, długi strumień
-u, –unbuffered : Załaduj minimalne ilości danych z plików wejściowych i częściej opróżniaj bufory wyjściowe

Zamiana frazy

Polecenie sed jest najczęściej używane do zamiany tekstu w pliku. Poniższe polecenie zastępuje w pliku moje.txt słowo „unix” słowem „linux”.

sed 's/unix/linux/' moje.txt

Aby zastąpić co drugie słowo w linii „unix” na „linux” użyj flagi „2”

sed 's/unix/linux/2' moje.txt

Flaga zastępowania /g (zastępowanie globalne) określa polecenie zastępujące wszystkie wystąpienia ciągu w wierszu.

sed 's/unix/linux/g' moje.txt

Umieść w nawiasach pierwszy znak każdego słowa

Ten przykład wypisuje pierwszy znak każdego słowa (z dużej litery) w nawiasie

echo "Twój Tekst jest Super" | sed 's/\(\b[A-Z]\)/\(\1\)/g'

co daje wynik:

(T)wój (T)ekst jest (S)uper

Powielanie zastąpionej linii

Flaga /p print drukuje zastąpioną linię dwukrotnie na terminalu. Jeśli wiersz nie ma wzorca wyszukiwania i nie jest zastępowany, to /p wypisuje ten wiersz tylko raz.

sed 's/unix/linux/p' moje.txt

Usuwanie linii z pliku

Polecenie SED może być również użyte do usuwania linii z określonego pliku.

Aby usunąć linię 5:

sed '5d' moje.txt

Aby usunąć ostatnią linię:

sed '$d' moje.txt

Aby usunąć linię z zakresu od x do y, np. od linii 3 do 5:

sed '3,5d' moje.txt

Aby usunąć linie od 5 do ostatniej:

sed '5,$d' moje.txt

Aby usunąć linię dopasowania wzoru, która zawiera słowo Pawel:

sed '/Pawel/d' moje.txt

Wyświetlenie pierwszej linii

sed -n '1p' moje.txt

Wyświetlenie wszystkich linie od 3-ciej to końca pliku

sed -n '3,$p' moje.txt

Wyświetlenie numeru linii, w których występuje wyrażenie UNIX

sed -n '/UNIX/=' moje.txt

Więcej informacji o aplikacji sed uzyskasz poleceniami:
sed -h
man sed

One thought on “Porady Admina: sed

  • 16 sierpnia 2022 at 21:00
    Permalink

    Dobre. Czytając o inxi przyszła taka myśl: może by kolega wespół zespół ewentualnie z innymi, napisał książkę kompleksowo o prywatności, anonimowości, bezpieczeństwie w Linux, dla przeciętnego zjadacza linuxa. Jakie aplikacje, ustawienia etc. Potem jej reklama na swoim – tym blogu, może jacyś chętni myślę. Ludzie przechodzą na linuxy. Trochę w nich zbyt dużo angielszczyzny, ale może kiedyś linuxpl.
    Nie bo tyle tego żeby opanować i nie czuć się w nim zagrożonym…

    Reply

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.

Witryna jest chroniona przez reCAPTCHA i Google Politykę Prywatności oraz obowiązują Warunki Korzystania z Usługi.