sed - nahrazování, vyhledávání

Napsal Mgr.Radovan Kaluža (») 27. 12. 2006 v kategorii Operační systémy, přečteno: 11488×

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


Štítky: sed
Facebook Twitter Topčlánky.cz Linkuj.cz

Komentáře

Zobrazit: standardní | od aktivních | poslední příspěvky | všechno
Článek ještě nebyl okomentován.


Nový komentář

Téma:
Jméno:
Notif. e-mail *:
Komentář:
  [b] [obr]
Odpovězte prosím číslicemi: Součet čísel čtyři a tři