Potřebujete v Linuxu nahradit dvě slova v souboru, něco vyhledat a vše pomocí jednoho jednoduchého příkazu.
Sed je výborný neinteraktivní textový editor. Velice vhodný pro dávkové zpracování textů. Tento díl je určen pro všechny, kteří aspoň občas potřebují něco nahradit, něco vyhledat a běžný textový editor nestačí. První díl je určen konkrétním příkladům, bez nějakého extra popisu :-)Vyhledávání
vytiskne řádky obsahující slovo "stare"
sed '/stare/!d' soubor
vytiskne řádky neobsahující slovo "stare"
sed '/stare/d'
vytiskne řádky obsahující 11 zároveň 22 zároveň 33
sed '/11/!d; /22/!d; /33/!d' soubor
vytiskne řádky obsahující 11 zároveň 22 ale ne 33
sed '/11/!d; /22/!d; /33/d' soubor
vytiskne řádky obsahující 11 nebo 22 nebo 33
sed -e '/11/b' -e '/22/b' -e '/33/b' -e d soubor
vytiskne sekce mezi START a KONEC
sed '/START/,/KONEC/!d' soubor
nevytiskne sekce mezi START a KONEC
sed '/START/,/KONEC/d' soubor
vymaz vse po slovu START
sed '1,/START/!d'
vymaz vse do slova START
sed '1,/START/d'
nahrazování v textu
nahradí slova "stare" slovy "nove", přepínač i znamená, že se změna provede přímo do souboru, jinak by se pouze vytiskla na obrazovku, nebo bychom ji mohli přesměrovat do nového souboru
sed -i 's/stare/nove/g' soubor
sed 's/stare/nove/g' soubor >> novysoubor
nahradí pouze prvni výskyt
echo "11 stare 22 stare 33 stare" | sed 's/stare/nove/'
dostaneme
11 nove 22 stare 33 stare
nahradí pouze druhy výskyt
echo "11 stare 22 stare 33 stare" | sed 's/stare/nove/2'
dostaneme
11 stare 22 nove 33 stare
nahradí vše
echo "11 stare 22 stare 33 stare" | sed 's/stare/nove/g'
dostaneme
11 nove 22 nove 33 nove
nahradí řákdy 2 až 4
sed '2,4 s/stare/nove/g' soubor
nahradí text "stare" za "nove" u řádků obsahujicí slovo "pouze"
sed '/pouze/s/stare/nove/g' soubor
nahradí š-s č-c
echo "š-čč" | sed 'y/šč/sc/
dostaneme
s-cc
nahrada textu u velkých souborů
misto
sed 's/stare/nove/g' soubor
pro vetsi soubory použíjte rychlejší možnost
sed '/stare/s/stare/nove/g' soubor
a nebo zkráceně
sed '/stare/s//nove/g' soubor
možnosti zápisu
vytiskne řádky obsahujicí slovo "stare"
sed '/stare/!d' soubor
rovněž můžeme použít
cat soubor | sed '/stare/!d'
a nebo
sed -e '/stare/!d' soubor
za přepínačem -e se očekává příkaz, pokud máme jen jeden příkaz, vynecháváme jej, přepínač -f slouží pro načítání příkazů ze souboru
pokud potřebujeme přímo uložit změnu do souboru, použijeme -i tedy např
sed -e '/stare/!d' -i soubor
a soubor se změní
místo oddělovače /, mužeme použít cokoliv jiného např #
sed '/stare/!d' soubor
sed '#stare#!d' soubor