Sed, zkratka pro Stream EDitor, je příkaz, který se používá k provádění textových transformací a manipulací se souborem. Některé z těchto transformací zahrnují vyhledávání a nahrazování textu. Pomocí příkazu sed Linuxu můžete manipulovat a upravovat textové soubory, aniž byste je museli otevírat. V tomto tutoriálu se naučíte, jak manipulovat s textovými soubory pomocí příkazu sed.
Syntaxe příkazu Linux sed
$ sed {OPTIONS} filename
V tomto tutoriálu budeme používat linuxgeek.txt
soubor jako náš referenční soubor.
# cat linuxgeek.txt
Výstup
1. Nahrazení nebo nahrazení řetězce
Ve většině případů se k nahrazení řetězců textu používá příkaz sed.
Níže uvedený příkaz nahrazuje „Linux ‘ s ‘Unix ‘.
# sed 's/Linux/Unix/' linuxgeek.txt
- Znaky
s
v příkazu je indikátor nahrazení. /
jsou oddělovačeLinux
je hledaný výrazunix
je náhradní termín
Ve výchozím nastavení nahradí příkaz sed pouze první výskyt v řádku . Následující výskyty nebudou nahrazeny ani nahrazeny.
Výstup
2. Nahrazení nebo nahrazení n-tého výskytu v řádku
Pokud chcete nahradit druhý výskyt řetězce v řádku, použijte /2
příznak, jak je znázorněno.
# sed 's/Linux/Unix/2' linuxgeek.txt
Výstup
3. Nahrazení nebo nahrazení všech výskytů vzoru v souboru
Chcete-li nahradit všechny výskyty vyhledávacího vzoru v souboru, použijte /g
vlajka. /g
je globální náhrada.
# sed 's/Linux/Unix/g' linuxgeek.txt
Výstup
4. Nahrazení nebo nahrazení všech výskytů řetězce pouze v konkrétním řádku
Pokud chcete nahradit všechny výskyty řetězce na konkrétním řádku, řekněme na řádku 2, použijte níže uvedenou syntaxi
# sed '2 s/Linux/Unix/g' linuxgeek.txt
Výstup
5. Nahrazení nebo nahrazení řetězce v určitém rozsahu řádků
Pokud chcete určit rozsah řádků, ve kterých dojde k nahrazení řetězce, použijte příklad uvedený níže. Příklad dává pokyn k nahrazení od řádků 1-3
# sed '1,3 s/Linux/Unix/g' linuxgeek.txt
Výstup
Navíc můžete nahradit text z určitého řádku na konec souboru, jak je znázorněno
# sed '2,$ s/Linux/Unix/g' linuxgeek.txt
Příkaz dělá to, že nahradí všechny výskyty od 2. řádku do posledního řádku souboru.
Výstup
6. Uveďte závorku k prvnímu znaku každého slova
Níže uvedený příklad ukazuje, jak můžete vložit závorku na každý první znak slova na řádku.
$ echo "Hey Guys, Welcome To Linux Operating System" | sed 's/\(\b[A-Z]\)/\(\1\)/g'
Výstup
7. Odstranit řádky ze souboru
Můžete také použít příkaz linux sed k odstranění řádků v souboru.
Příklady
Syntaxe:
$ sed 'nd' filename.txt
Chcete-li odstranit 3. řádek v souboru, spusťte
$ sed '3d' linuxgeek.txt
Výstup
Chcete-li odstranit rozsah řádků, řekněme od řádku 3 do řádku 5, spusťte příkaz:
$ sed '3,5d' linuxgeek.txt
Výstup