Úvod do příkazu Linux sed
Operační systém Linux používá terminálové příkazy pro práci s počítačovým systémem souborů. Primární použití příkazu Linux sed , který je zkratkou pro stream editor, je upravit každý řádek souboru nebo stream nahrazením specifikovaných částí řádku. Změní základní textové změny na soubor nebo vstup z potrubí. Řekněme například, že máte soubor s názvem "songs.text", který obsahuje tyto řádky:
1, Justin Timberlake, titul 545, cena $ 6.30 2, Taylor Swift, titul 723, cena $ 7.90 3, Mick Jagger, titul 610, cena $ 7.90 4, Lady Gaga, titul 118, cena $ 6.30 5, Johnny Cash, titul 482, cena $ 6.50 6, Elvis Presley, Název 335, Cena $ 6.30 7, John Lennon, Název 271, Cena $ 7.90Vytváření textových náhrad pomocí Sed
Pokud chcete změnit všechny výskyty cen ve výši 6,30 až 7,30 dolarů, můžete tyto změny provést příkazem sed tímto způsobem:
sed 's / 6.30 / 7.30 /' songs.txt> songs2.txtTento kód provede změnu a zapíše upravený soubor na "songs2.txt". Výstupní soubor obsahuje:
1, Justin Timberlake, titul 545, cena $ 7.30 2, Taylor Swift, titul 723, cena $ 7.90 3, Mick Jagger, titul 610, cena $ 7.90 4, Lady Gaga, titul 118, cena $ 7.30 5, Johnny Cash, titul 482, cena $ 6.50 6, Elvis Presley, Název 335, Cena 7,30 dolar 7, John Lennon, Název 271, Cena $ 7,90Pokud chcete nahradit všechny výskyty "Hotovosti" pomocí "Koše", použijete:
Sed 's / Cash / Trash /' songs.txt> songs2.txtkterý vytvoří soubor s obsahem:
1, Justin Timberlake, Název 545, Cena $ 7: 30 2, Taylor Swift, Název 723, Cena $ 7.90 3, Mick Jagger, Název 610, Cena $ 7.90 4, Lady Gaga, Název 118, Cena $ 7: 30 5, Johnny Trash, Název 482, Cena $ 6.50 6, Elvis Presley, Název 335, Cena $ 7: 30 7, John Lennon, Název 271, Cena $ 7.90Filtrování pomocí příkazu Sed
Sed se také často používá k filtrování řádků v souboru nebo streamu. Pokud například chcete vidět pouze řádky obsahující "John", použijete:
sed -n '/ John / p' songs.txt> johns.txtkterý zapíše následující řádky do souboru johns.txt:
5, Johnny Trash, Název 482, Cena $ 6.50 7, John Lennon, Název 271, Cena $ 7.90