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"?

27
demandé sur codaddict 2010-10-21 10:25:26

4 réponses

sed est l'éditeur de flux . Il peut faire toute une pile de choses vraiment cool, mais le plus commun est le remplacement de texte.

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

33
répondu Jack Kelly 2010-10-21 06:31:14

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

À titre d'exemple

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

Produira "foo,$bar$".

20
répondu codaddict 2013-01-22 06:40:12

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

6
répondu Lekensteyn 2010-10-21 06:28:22

Sed est un éditeur de flux. Je dirais essayer 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
répondu Anil Vishnoi 2010-10-21 06:30:00