2010-10-21 18 views
18

Qualcuno potrebbe spiegare questo comando per me:comando "sed" in bash

cat | sed -e 's,%,$,g' | sudo tee /etc/init.d/dropbox << EOF 
    echo "Hello World" 
EOF 

Cosa fa il comando "sed" fare?

+1

sed è l'abbreviazione di "editor di flusso" - modifica flussi di byte/caratteri. –

+1

Potresti averlo chiesto come commento alla mia risposta, sarei stato lieto di espanderlo. – Benoit

risposta

22

sed è il Stream EDitor. Può fare una pila intera di really cool things, ma il più comune è la sostituzione del testo.

La parte s,%,$,g della riga di comando è il comando sed da eseguire. Il s rappresenta il sostituto, i caratteri , sono delimitatori (è possibile utilizzare altri caratteri: /, : e @ sono popolari). Lo % corrisponde al modello (qui un segno di percentuale letterale) e lo $ corrisponde al secondo modello da abbinare (qui un segno di dollaro letterale). Lo g alla fine equivale a sostituire g su ogni riga (altrimenti aggiornerebbe solo la prima corrispondenza).

+1

Per qualche ragione sed sta sostituendo tutte le linee per me, non solo il primo quando tralascio il 'g' alla fine. per esempio. 'sudo sed -i ', abilitato = 0, abilitato = 1,'/etc/yum.repos.d/epel.repo' in un'immagine AWS di Amazon con versione 4.2.1 – Programster

+2

sed verrà sempre eseguita su ogni riga. L'opzione 'g' fa sostituire ogni partita su quella linea invece della prima partita su quella linea. –

5

Si legge Hello World (cat), sostituisce tutti (g) occorrenze di % da $ e (più) lo scrive /etc/init.d/dropbox come root.

18

Qui sed sostituisce tutte le occorrenze di % con $ nel suo input standard.

Come esempio

$ echo 'foo%bar%' | sed -e 's,%,$,g' 

produrrà "foo $ bar $".

1

sed è un editor di flusso. Direi che prova l'uomo sed.If non avete trovato questa pagina di manuale nel vostro sistema si riferisce questo URL:

http://unixhelp.ed.ac.uk/CGI/man-cgi?sed

+1

+1 per la pagina di manuale. –