Jak používat Sed v Linuxu

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í!