web-dev-qa-db-fra.com

commande "sed" dans bash

Quelqu'un pourrait-il m'expliquer cette commande:

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

Que fait la commande "sed"?

36
ajsie

sed est le Stream EDitor . Il peut faire toute une pile de choses vraiment cool , mais le plus courant est le remplacement de texte.

Le s,%,$,g une partie de la ligne de commande est la commande sed à exécuter. s signifie substitut, , les caractères sont des délimiteurs (d'autres caractères peuvent être utilisés; /, : et @ sont populaires). Le % est le modèle à faire correspondre (ici un signe de pourcentage littéral) et le $ est le deuxième motif à mettre en correspondance (ici un signe dollar littéral). Le g à la fin signifie à glocalement remplacer sur chaque ligne (sinon il ne mettrait à jour que la première correspondance).

42
Jack Kelly

Ici sed remplace toutes les occurrences de % avec $ dans son entrée standard.

Par exemple

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

produira "foo $ bar $".

26
codaddict

Ça lit Hello World (cat), remplace toutes les occurrences (g) de % par $ et (sur) l'écrit dans /etc/init.d/dropbox en tant que root.

7
Lekensteyn

sed est un éditeur de flux. Je dirais essayez man sed.Si vous n'avez pas trouvé cette page de manuel dans votre système, référez-vous à cette URL:

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

1
Anil Vishnoi