Ne vždy je vhodné použít sed :-)
práce s emaily
tělo mejlu
sed '1,/^$/d' email.eml
ziskání hlavičky
sed '1,/^$/!d' email.eml
vytiskne From
cat email.eml | sed '/^From: */!d; s/^From: //1' | sed 's~.*<\(.*\)>.*~\1~'
zakomentování zprávy
sed 's/^/# /'
odkomentování zprávy
sed 's/^# //'
odstraní html znaky
sed -e :a -e 's/<[^<]*>/ /g;/</{N;s/\n/ /;ba;}'
ostatní vychytávky
n potlačí výpis standartního výstupu
sed '=' soubor
sed -n '=' soubor
vymaže prázdné řádky
sed '/^$/d' soubor
vymaže prázdné řádky a přidá ke každému právě jeden nový řádek
sed '/^$/d;G' soubor
smaže zakomentované řádky
sed '/^[\t]*#.*/d;' soubor
za každý řádek přidá jeden volný
sed G soubor
odstraní každý druhý řádek
sed 'n;d'
vloží řádek za řádek obsahující xx
sed '/xx/G' soubor
vloží prázdný řádek před řádek obsahující xx
sed '/xx/{x;p;x;}'
x - vyjme řádek a drží mezeru
p - tiskne řádek
{} - seznam instrukcí, které se mají provádět
vložení několika mezer na začátek každého řádku
sed 's/^/ /' soubor
vytiskne řádky o velikosti 15 znaků nebo více
sed '/^.\{15\}/!d'
vytiskne řádky o velikosti menší jak 15 znaků
sed '/^.\{15\}/d'
vytiskne řádek 2 až 5
sed '2,5!d' soubor
vytiskne řádek 5
sed '5!d' soubor
vytiskne řádek 5, vhodné pro velké soubory
sed '52q;d' soubor
vytiskne první 3 řádky
sed 3q soubor
očíslování souboru
sed = soubor | sed 'N;s/\n/. /'
pouze jednotlivé řádky
sed -n '=' soubor
celkový počet řádků
sed -n '$=' soubor
vymaže prázdné znaky zprava i zleva
sed 's/^[ \t]*//;s/[ \t]*$//'
příkaz p znamená, že vytiskne soubor před jeho zpracovaním
echo 'STARE řádek' |sed 'p;s/STARE/NOVE/g'
přepínač H přidává do zásobníku postupně výsledky
echo 'abcde' |sed 'H;s/ab/AB/;H;s/c/C/;H;g'
výsledek
abcde
ABcde
ABCde
ne vždy používejme sed
vytiskne první 3 řádky
head -3 soubor
vytiskne poslední 3 řádky
tail -3 soubor
vypíše řádky obráceně
tac soubor
odstraní duplicitní řádky
unique soubor
odstraní prázdné řádky
cat -s soubor
vytiskne řádky, které obsahují slovo aa a neobsahuje slovo cc
echo " aa 11 bb" | grep aa | grep -v cc
celkový počet řádků
wc -l file | awk '{print $1}'