Sed
znamená editor streamu. Je to editor založený na příkazovém řádku pro Linux. Oblíbené použití sed je pro úpravu souborů jako součást automatizačního skriptu v Linuxu, protože editory obvykle vyžadují aktivní vstup uživatele a nemohou upravovat soubory mimo obrazovky editoru. Sed se nejčastěji používá pro hledání a nahrazování z příkazového řádku.
Tento typ textového editoru lze také kategorizovat jako neinteraktivní textový editor.
Podívejme se na některé běžné možnosti úprav souborů pomocí Sed. Jako příklad si vezmeme následující soubor:
$: test kočky.txt Rychlý hnědý pes přeskočil línou kočku. Operační systém Linux. Les poblíž mého bydliště má kočku a také vlky.
Hledat a nahradit
Chcete-li vyhledat řetězec v souboru a nahradit jej jiným řetězcem, spusťte:
sed -i "s/cat/liška/g" test.txt
Tady, -i
flag instruuje sed, aby zapsal změny do souboru. Bez této vlajky, sed
zobrazí pouze soubor se změněným řetězcem.
V uvozovkách máme s/kočka/liška/g
. The s
je pro příkaz hledání a nahrazování sed
. Pak máme řetězec, který má být prohledán, což je kočka
. Poté řetězec, kterým jej nahradíte, tj. liška
. Nakonec máme volitelnou možnost G
, který nařizuje sed
nahradit všechny výskyty na všech řádcích souboru. Bez G
, sed nahradí pouze první výskyt kočka
na každém řádku.
Zde lze také použít Regex.
sed -i "s/f[a-z]*\./cat\./g"
Vložit
Chcete-li vložit text před řádek se shodným řetězcem, použijte:
sed -i "/cat/i Start:" test.txt
Tady, kočka
je hledaný řetězec a Start:
je řetězec, který se má zadat před řádek, kde se nachází hledaný řetězec.
Podobně pro vložení textu za řádek použijte:
sed -i "/liška/a Konec." test.txt
Vymazat
Chcete-li odstranit řádek obsahující podřetězec, použijte:
sed -i "/Linux/d" test.txt
Chcete-li odstranit řádek s číslem řádku, např. první řádek, použijte:
sed -i '1d' test.txt
Kombinace více funkcí
Pro kombinaci více funkcí, např. vyhledat a nahradit, odstranit jedním příkazem, -E
lze použít vlajku.
sed -i -e "s/liška/kočka/g" -e '2d' test.txt
? Na zdraví!