Polecenie sed w systemie Linux to potężny edytor strumieni, który umożliwia wykonywanie podstawowych transformacji tekstu w strumieniu wejściowym (pliku lub danych wejściowych z potoku). Jest szeroko stosowany do wyszukiwania, znajdowania i zastępowania, wstawiania i usuwania tekstu w plikach. W przeciwieństwie do prostych edytorów tekstu, sed przetwarza dane w potoku i jest szczególnie przydatny do automatyzacji manipulacji tekstem w skryptach powłoki.
Kluczowe cechy sed obejmują możliwość:
- Zastąp tekst w pliku za pomocą wyrażeń regularnych.
- Usuń linie w oparciu o określone wzorce.
- Wstaw lub dołącz tekst do określonych wierszy.
- Przekształcaj lub konwertuj tekst w oparciu o złożone wzorce.
W tym przewodniku znajdują się przykłady demonstrujące praktyczne zastosowanie polecenia sed w systemie Linux, pokazujące, w jaki sposób można go wykorzystać do różnych zadań związanych z przetwarzaniem tekstu.
Kluczowa składnia i opcje polecenia Sed
Przed zagłębieniem się w przykłady ważne jest, aby zrozumieć podstawową składnię polecenia sed:
sed [OPTION]... {script-only-if-no-other-script} [input-file]...
Oto kilka często używanych opcji:
- -e: Zezwala na użycie wielu poleceń.
- -n: Pomija domyślne zachowanie podczas drukowania każdej linii.
- -i: Edytuje pliki lokalnie (należy zachować ostrożność, ponieważ modyfikuje oryginalny plik).
Podstawowe przykłady polecenia Sed w systemie Linux
Podstawowe zastępowanie tekstu
Jednym z najczęstszych zastosowań sed jest zamiana tekstu.
echo "Welcome to Linux" | sed 's/Linux/Unix/'
Wyjście:
Welcome to Unix
Globalna substytucja
Domyślnie sed zastępuje pierwsze wystąpienie w wierszu. Aby zastąpić wszystkie wystąpienia, użyj flagi 'g'.
echo "Apples are better than apples" | sed 's/apples/oranges/g'
Wyjście:
Apples are better than oranges
Usuwanie linii
sed może również usuwać wiersze na podstawie określonego wzorca.
echo -e "apple\norange\nbanana" | sed '/orange/d'
Wyjście:
apple
banana
Wstawianie i dołączanie tekstu
Nowe linie tekstu można wprowadzić przed lub po dopasowaniu wzorca.
echo "Hello" | sed 'i\Good Morning'
Wyjście:
Good Morning
Hello
Zmiana wielkości liter
Za pomocą sed możesz manipulować wielkością liter tekstu za pomocą funkcji y. Zobaczmy przykład konwersji małych liter na duże:
echo "hello world" | sed 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'
Wyjście:
HELLO WORLD
Zaawansowane użycie polecenia Sed w systemie Linux
Podstawianie tekstu wielowzorcowego
W przypadku wielu wzorców można zastosować opcję -e, aby połączyć różne polecenia podstawienia.
echo "Welcome to Linux. I love Linux." | sed -e 's/Linux/Unix/' -e 's/love/adore/'
Wyjście:
Welcome to Unix. I adore Linux.
Warunkowe zastępowanie tekstu
Dzięki sed możliwe jest zastępowanie tekstu przy użyciu adresów na podstawie określonych warunków.
echo -e "apple\nbanana\ncherry" | sed '/banana/s/$/ - favorite fruit/'
Wyjście:
apple
banana - favorite fruit
cherry
Używanie Sed z wyrażeniami regularnymi
Wykorzystaj moc wyrażeń regularnych, aby dopasowywać złożone wzorce.
echo "Price is $100" | sed 's/$[0-9]*/& (USD)/'
Wyjście:
Price is $100 (USD)
Odniesienia wsteczne dotyczące złożonych zamienników
Odniesienia wsteczne można wykorzystać do odniesienia się do części dopasowanego wzorca.
echo "The white cat and black dog" | sed 's/\(white\|black\) \(cat\|dog\)/\2 \1/'
Wyjście:
The cat white and dog black
Edycja lokalna za pomocą opcji -i
Jedną z potężnych funkcji sed jest możliwość bezpośredniej edycji plików. Można to osiągnąć za pomocą opcji -i, ale zawsze wykonaj kopię zapasową oryginalnego pliku przed dokonaniem jakichkolwiek bezpośrednich modyfikacji.
echo "Original text" > temp.txt
sed -i 's/Original/Modified/' temp.txt
cat temp.txt
Wyjście:
Modified text
Wniosek
Zrozumienie i opanowanie polecenia sed może znacznie zwiększyć możliwości manipulowania i przetwarzania plików tekstowych w systemie Linux. Ćwicząc podane przykłady, możesz dowiedzieć się, jak efektywnie wykonywać typowe zadania związane z przetwarzaniem tekstu, automatyzować powtarzalne zadania edycji i włączać sed do swojego przepływu pracy związanego ze skryptami. Regularne eksperymentowanie z różnymi opcjami i poleceniami sed pogłębi Twoją wiedzę i umożliwi wykorzystanie jej pełnego potencjału. Ciesz się wszechstronnością i mocą, jaką sed wnosi do zadań związanych z przetwarzaniem tekstu w systemie Linux.