Polecenie sed (Stream Editor) w Linuxie jest potężnym narzędziem używanym do przetwarzania tekstu i modyfikacji plików. Umożliwia użytkownikom efektywne wyszukiwanie, zastępowanie, wstawianie i usuwanie tekstu w plikach, co czyni go niezbędnym poleceniem do automatyzacji i skryptowania. W tym przewodniku zbadamy, jak używać polecenia sed do aktualizacji plików w Linuxie na praktycznych przykładach.

Dlaczego używać polecenia Sed?

Polecenie sed jest szeroko stosowane do:

Zastępowania tekstu – Łatwe zastępowanie słów, fraz lub wzorców w plikach.
Przetwarzania wsadowego – Modyfikacja wielu plików jednocześnie za pomocą skryptów.
Wydajności – Szybko przetwarza duże pliki bez ich otwierania.
Edytowania w linii – Modyfikacja plików bezpośrednio z linii poleceń.
Automatyzacji – Używane w skryptach do obsługi powtarzających się modyfikacji tekstu.

Podstawowa składnia polecenia Sed

Ogólna składnia polecenia sed to:

sed [OPTIONS] 's/old-text/new-text/g' filename

Gdzie:

  • s – Oznacza substytucję.
  • old-text – Tekst do zastąpienia.
  • new-text – Tekst zastępczy.
  • g – (Globalnie) Zapewnia, że wszystkie wystąpienia w linii są zastępowane.
  • filename – Plik do modyfikacji.

Jak używać polecenia Sed do aktualizacji plików

1. Zastąp słowo w pliku

Aby zastąpić konkretne słowo w pliku, użyj:

sed 's/Linux/Ubuntu/g' file.txt

To zastępuje pierwsze wystąpienie „Linux” „Ubuntu” w każdej linii pliku.txt.

2. Zastąp wszystkie wystąpienia w pliku

Aby zastąpić wszystkie wystąpienia słowa globalnie w pliku:

sed 's/Linux/Ubuntu/g' file.txt

Flaga g zapewnia, że każde wystąpienie w linii jest zastępowane.

3. Edytuj plik na miejscu (modyfikuj plik bezpośrednio)

Aby wprowadzić zmiany bezpośrednio w pliku bez wyświetlania wyników:

sed -i 's/Linux/Ubuntu/g' file.txt

Opcja -i umożliwia edytowanie na miejscu, co oznacza, że oryginalny plik jest modyfikowany bez potrzeby zapisywania osobnej wersji.

4. Zastąp tekst tylko w określonych liniach

Aby zmodyfikować tylko określone linie w pliku, określ numer linii:

sed '3s/Linux/Ubuntu/' file.txt

To polecenie zastępuje „Linux” „Ubuntu” tylko w linii 3.

5. Usuń linię zawierającą określony tekst

Aby usunąć wszystkie linie zawierające konkretne słowo, użyj:

sed '/unwanted-text/d' file.txt

To usuwa wszystkie linie, które zawierają „unwanted-text”.

6. Usuń określoną linię według numeru

Aby usunąć określoną linię, użyj:

sed '5d' file.txt

To usuwa linię 5 z pliku.txt.

7. Wstaw tekst przed linią

Aby dodać linię przed określonym numerem linii:

sed '3iThis is a new line' file.txt

To wstawia „To jest nowa linia” przed linią 3.

8. Wstaw tekst po linii

Aby wstawić linię po określonym numerze linii:

sed '3aThis is an appended line' file.txt

To dodaje „To jest dodana linia” po linii 3.

9. Zastąp słowo w wielu plikach

Aby zastąpić tekst w wielu plikach jednocześnie:

sed -i 's/Linux/Ubuntu/g' *.txt

To polecenie modyfikuje wszystkie pliki .txt w katalogu, zastępując „Linux” „Ubuntu”.

Zaawansowane polecenia Sed

1. Użyj wielu poleceń Sed razem

Aby wykonać wiele modyfikacji jednocześnie:

sed -i -e 's/Linux/Ubuntu/g' -e 's/Server/Cloud/g' file.txt

To zastępuje „Linux” „Ubuntu” i „Server” „Cloud” w pliku.txt.

2. Użyj Sed z wyrażeniami regularnymi

Aby zastąpić liczby w pliku:

sed 's/[0-9]/#/g' file.txt

To zastępuje wszystkie cyfry na #.

3. Wyodrębnij określone linie z pliku

Aby wyodrębnić i wyświetlić linie od 5 do 10:

sed -n '5,10p' file.txt

Opcja -n zapobiega drukowaniu całego pliku, pokazując tylko linie 5-10.

Najlepsze praktyki używania Sed

  1. Zawsze twórz kopie zapasowe plików przed użyciem -i – Zapobiega przypadkowemu utracie danych.
  2. Używaj wyrażeń regularnych – Potężne dopasowywanie wzorców do złożonych modyfikacji.
  3. Testuj polecenia przed wprowadzeniem zmian – Uruchom sed bez -i, aby zobaczyć podgląd wyników.
  4. Używaj skryptów do automatyzacji – Połącz sed z skryptowaniem powłoki do przetwarzania wsadowego.

Podsumowanie

Polecenie sed jest wszechstronnym i wydajnym narzędziem do aktualizacji plików w Linuxie. Niezależnie od tego, czy potrzebujesz zastąpić tekst, usunąć linie, czy wstawić zawartość, sed może zautomatyzować i uprościć te zadania. Opanowując sed, możesz poprawić swój przepływ pracy i zwiększyć wydajność w administracji Linuxem i skryptowaniu.