SED examples


- stampa tutte le linee di un file tranne i commenti (iniziano con '#')
  cat $FILE | sed -e '/^#/d'
- stampa tutte le linee che iniziano con un numero
  cat $FILE | sed -n "/^[0-9]/p"
- stampa tutte le linee che NON iniziano con un numero
  cat $FILE | sed -n "/^[0-9]/p"
- rimuove tutte le linee vuote (costituite solo da \n)
  cat $FILE | sed -e "/^$/d"
- rimuove tutte le linee formate da spazi (e seguite da \n)
  cat $FILE | sed -e "/^[ ][	]*$/d"
- rimuove tutte le linee che contengono 'exportPIPPO'
  sed "/export[ |	]*PIPPO/d" $FILE
- rimuove il path di un filename
  echo "/usr/bin/prova" | sed -e "s/.*\///"
  scrive: prova
- scrive solo il path
  echo "/usr/bin/prova" | sed -e "s/\/[^\/]*$//"
  scrive: /usr/bin
- stampa la 'n'esima riga di un file (nell'esempio la 5a)
  sed -n -e "5p" $FILE
- stampa le righe di un file (nell'esempio dalla 2a alla 5a)
  sed -n -e "2,5p" $FILE
- esempi di sostituzioni:
  sed "s/\"/ /g"	.. sostituisce tutte le '"' con space
  sed "s/,/ /g"		.. sostituisce tutte le ',' con space
  sed 's:bin::'     .. sostituisce il primo 'bin' con nulla

- esempi di estrazioni:
  - id | sed -n "/^uid=[0-9]*(\([^)]*\)).*/s//\1/p"
    estrae: nome dell'user
  - echo "-T100" | sed 's/^-T//'
    estrae: 100

- estrae i campi user e home (il 1o e il 6o) dal file /etc/passwd e formatta:
  cat /etc/passwd | sed 's/\([^:]*\):.*:\(.*\):[^:]*$/_dir=\2 _user=\1/'
  scrive: _dir=/ _user=root
          ...
          _dir=/home/bellina _user=bellina