Porady Admina: sed
Ostatnia aktualizacja: 16 września 2023, 12:51
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
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…