Jak korzystać z Sed w Linuksie

Sed oznacza edytor strumienia. Jest to edytor oparty na linii poleceń dla systemu Linux. Popularnym zastosowaniem sed jest edytowanie plików w ramach skryptu automatyzacji w systemie Linux, ponieważ zwykłe edytory wymagają aktywnego wprowadzania danych przez użytkownika i nie mogą edytować plików poza ekranami edytora. Sed jest najczęściej używany do wyszukiwania i zamiany z wiersza poleceń.

Ten typ edytora tekstu można również sklasyfikować jako nieinteraktywny edytor tekstu.

Zobaczmy kilka typowych opcji edycji plików za pomocą Sed. Jako przykład weźmiemy następujący plik:

$: cat test.txt Szybki brązowy pies przeskoczył nad leniwym kotem. System operacyjny Linux. Las obok mnie ma kota i wilki. 

Wyszukaj i zamień

Aby wyszukać ciąg w pliku i zastąpić innym ciągiem, uruchom:

sed -i "s/cat/fox/g" test.txt

Tutaj -i flaga nakazuje sedowi zapisanie zmian w pliku. Bez tej flagi sed po prostu wyświetli plik ze zmienionym ciągiem.

W cytatach mamy s/kot/lis/g. ten s służy do wyszukiwania i zamiany polecenia sed. Następnie mamy ciąg do przeszukania, który jest Kot. Następnie ciąg do zastąpienia go, tj. lis. Wreszcie mamy opcjonalne g, który instruuje sed zastąpić wszystkie wystąpienia we wszystkich wierszach pliku. Bez g, sed zastąpi tylko pierwsze wystąpienie Kot na każdej linii.

Można tu również użyć regexa.

sed -i "s/f[a-z]*\./cat\./g"

Wstawić

Aby wstawić tekst przed wierszem z dopasowanym ciągiem, użyj:

sed -i "/cat/i Start:" test.txt

Tutaj, Kot jest wyszukiwanym ciągiem i Początek: jest ciągiem do wprowadzenia przed wierszem, w którym znajduje się szukany ciąg.

Podobnie, aby wstawić tekst po linii, użyj:

sed -i "/lis/a koniec." test.txt

Kasować

Aby usunąć linię zawierającą podciąg, użyj:

sed -i "/Linux/d" test.txt

Aby usunąć linię z numerem linii, np. w pierwszym wierszu użyj:

sed -i '1d' test.txt

Łączenie wielu funkcji

Aby połączyć wiele funkcji, np. wyszukaj i zamień, usuń, jednym poleceniem, -mi można użyć flagi.

sed -i -e "s/lis/cat/g" -e '2d' test.txt

? Twoje zdrowie!