Jak używać polecenia SED, aby zastąpić ciąg w plikach

Jak używać polecenia SED, aby zastąpić ciąg w plikach

Czy kiedykolwiek masz sytuację, w której musisz zastąpić słowo lub zdanie w wielu plikach? Możesz go skopiować i wkleić, a może istnieje istnieje skrypt, który może wykonać zadanie. Ale co powiesz na to, że musisz go wymienić innym słowem lub zdaniem gdzie indziej? Możesz użyć znalezienia, ale byłoby to zbyt ogólne i wymagałoby napisania skryptu do tego zadania. A co, jeśli nawet nie wiesz, jakie słowo lub zdanie musisz znaleźć i wymienić? Co powiesz na użycie sedu? Jeśli nie znasz wiersza poleceń UNIX, SED jest edytorem strumienia. Jest to prosty edytor tekstu, który odczytuje ze standardowych wejściowych i wykonuje operacje edycji w strumieniu podczas czytania. Jest powszechnie używany do wyszukiwania i zastępowania funkcjonalności w skryptach.

W tym artykule pokażemy kilka przykładów używania SED do wykonywania wyszukiwania i zastępowania tekstu w plikach.

Znajdź i wymień ciąg w plikach

Jeśli musisz po prostu przeprowadzić proste wyszukiwanie i zastąpienie, możesz użyć następującej składni:

sed -i 's/string_to_find/string_to_replace/' filen file1 filen2 

Tutaj:

  • -I: Ta flaga wskazuje SED, że Twój plik wejściowy ma być jednym z plików określonych po poleceniu.
  • string_to_find: To jest ciąg, którego chcesz wyszukać w plikach.
  • string_to_replace: To jest ciąg, który chcesz zastąpić ciąg, co_to_find w plikach.
  • FILE1 FILE2 PLIKA: To jest lista plików, które SED wyszukuje i zastąpi.

Poniższe polecenie będzie szukało wszystkich ciągów „cześć” w Witamy.tekst plik. Następnie zastąp go nowym ciągiem „Howdy” w tym samym pliku.

sed -i 's/hello/howdy/g' wita.tekst  

Możesz także utworzyć kopię zapasową oryginalnego pliku przed wprowadzeniem zmian -I a następnie pewne rozszerzenie. Na przykład:

sed -i.Backup 's/hello/howdy/g' mile witaj.tekst  

To utworzy powitanie pliku.tekst.kopia zapasowa w bieżącym katalogu z oryginalną zawartością pliku.

Rekurencyjnie zastępuj tekst w wielu plikach

Poniższe polecenie jest pomocne w zastąpieniu ciągników w wielu plikach jednocześnie w katalogu /opt /dokumentach. Tutaj znajdź przejść do wszystkich plików w określonym katalogu i wykonuje polecenie SED jeden po drugim.

Znajdź/opt/docs/-type f -exec sed -i 's/hello/howdy/g' ;  

Wymień tekst bez wpływu na oryginalny plik

Jeśli nie chcesz wprowadzać zmian w oryginalnym pliku i tworzyć nowe pliki ze zmienionymi ciągami, użyj następującego polecenia.

sed 's/hello/howdy/g' mile witaj.TXT> Welcome_2.tekst  

To polecenie utworzy nowy plik Welcome_2.tekst ze zmodyfikowanym tekstem. Oryginalny plik z pozostaje niezmieniony.

Wniosek

Polecenie SED to potężne narzędzie, którego można użyć do edytowania tekstu w plikach. Jest to przydatne, gdy masz sytuację, w której musisz znaleźć i wymienić ciąg w wielu plikach. Możesz użyć znalezienia, ale byłoby to zbyt ogólne i wymagałoby napisania skryptu. A co, jeśli nawet nie wiesz, jakie słowo lub zdanie musisz znaleźć i wymienić? Używanie SED jest lepszym rozwiązaniem.