Tester komend sed
Testuj komendy sed (stream editor) online z podglądem na żywo. Zamiana tekstu, wyrażenia regularne, multiline. Bez terminala. Bezpłatnie.
-
1Wprowadź dane
Wpisz treść, wklej tekst lub załaduj plik z dysku. -
2Kliknij przycisk
Narzędzie natychmiast przetworzy Twoje dane w przeglądarce. -
3Pobierz wynik
Skopiuj gotowy tekst lub zapisz plik na urządzeniu.
return "Wynik gotowy w 0.1s";
}
Oceń to narzędzie:
Powiązane narzędzia
Inne narzędzia, które mogą Ci się przydaćTester komend sed – stream editor online z podglądem
sed (stream editor) to narzędzie Unix/Linux do przetwarzania tekstu linia po linii przy użyciu wyrażeń regularnych. Narzędzie pozwala testować komendy sed bezpośrednio w przeglądarce na testowym tekście bez dostępu do terminala.
Podstawy sed
Składnia: sed 'polecenie' plik lub echo "tekst" | sed 'polecenie'. Główne polecenia: s/pattern/replacement/ (substitution), d (delete line), p (print), q (quit), i (insert before), a (append after). Pliki: sed -i 's/old/new/g' plik.txt (in-place z nadpisaniem). Backup: sed -i.bak 's/old/new/g' plik.txt.
Zamiana tekstu (s command)
s/wzorzec/zamiana/flagi. g = global (wszystkie wystąpienia). i = case-insensitive. 2 = tylko drugie wystąpienie. Przykłady: sed 's/foo/bar/g' (zamień wszystkie foo na bar). sed 's/^/prefix /' (dodaj prefix do każdej linii). sed 's/ *$//' (usuń trailing spaces). sed 's/[0-9]//g' (usuń cyfry).
Regex w sed
Podstawowe: . (dowolny), * (zero lub więcej), ^ (początek), $ (koniec), [...] (klasa), [^...] (negacja). Rozszerzone (sed -E): + (jeden lub więcej), ? (zero lub jeden), | (alternatywa), () (grupy), {n,m} (ilościowe). Back-references: \1, \2 dla grup. Przykład: sed -E 's/(\w+) (\w+)/\2 \1/' (zamień kolejność słów).
Zakresy linii
Numer linii: sed '2d' (usuń linię 2). Zakres: sed '2,5d' (usuń linie 2-5). Ostatnia: sed '$d' (usuń ostatnią). Pattern: sed '/wzorzec/d' (usuń linie z wzorcem). Zakres pattern: sed '/start/,/end/d' (usuń między). Negacja: sed '/wzorzec/!d' (zachowaj tylko linie z wzorcem = grep equivalent).
Najczęstsze pytania
Jak zamienić tekst w wielu plikach na raz?
sed -i 's/stary/nowy/g' *.txt. Z backup: sed -i.bak 's/old/new/g' *.txt. Rekurencyjnie: find . -name "*.php" -exec sed -i 's/old/new/g' {} +. grep + sed: grep -rl "old" . | xargs sed -i 's/old/new/g'. Uwaga: sed -i na macOS wymaga: sed -i "" 's/old/new/g' (puste rozszerzenie backup).
Jak usunąć puste linie sed?
sed '/^$/d' plik.txt (usuń dokładnie puste). sed '/^\s*$/d' (puste lub tylko białe znaki). Komentarze: sed '/^#/d' (usuń linie z #). Puste + komentarze: sed -e '/^$/d' -e '/^#/d'. Wiele poleceń: sed -e cmd1 -e cmd2 lub sed 'cmd1;cmd2'.
sed vs awk vs perl dla zamiany tekstu?
sed: szybki, prosty, jeden cel = substitution. awk: kolumny i obliczenia. perl -pe: pełna moc Perla dla złożonych pattern. sed przykład: sed 's/foo/bar/g'. perl: perl -pe 's/foo/bar/g'. Python: python3 -c "import sys; [print(l.rstrip().replace('foo','bar')) for l in sys.stdin]". Dla prostej zamiany: sed najszybszy i najprostszy.
Jak odwrócić kolejność linii pliku?
tac: tac plik.txt (reverse cat, GNU). sed: sed -n '1!G;h;$p' plik.txt (GNU sed). awk: awk '{ lines[NR]=$0 } END { for(i=NR;i>=1;i--) print lines[i] }' plik.txt. Python: print("\n".join(open("plik.txt").read().splitlines()[::-1])). Sortowanie: sort -r (wg zawartości, nie kolejności).
Jakie są ograniczenia sed?
Brak obsługi true multi-line (wbudowany): sed przetwarza linię po linii. Workaround: sed z N komendą (pobierz następną linię do przestrzeni). Brak zmiennych i funkcji (jak awk). Skomplikowane regex: lepiej perl lub python. GNU sed vs BSD sed: różnice w -E, -i, multiline. Dla złożonych transformacji: awk lub python.
Powiązane narzedzia: generator komend AWK, tester regex i generator komend bash.