Polecenie sed w systemie Linux z przykładami

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.

Joshua James
Chodź za mną
Najnowsze posty autorstwa Joshua James (widzieć wszystko)

Dodaj komentarz