passer un substitute de vi vers sed [ sed ] - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 12-11-2004 à 06:24:44
je lis :
dans vi j'ai reussi a l'aide de %s/// de faire ce que je veux
et je lis :
s/^ssh.*\([0-9]\{2,\}\).tcp.*$/\1
pourquoi tu termine pas la commande? "s///"
il te manque un / non ? ( idée : a la fin de la ligne par exemple )
Marsh Posté le 12-11-2004 à 11:47:41
heu j'avoue que c'est vraiment pas bete.. auto-flagellation pour moi !!
n'empeche que ca marche toujours pas il ne m'affiche aucun changement sur la ligne.. j'essaye avec un fichier ne contenant que la ligne, mais rien n'y fait je n'arrive pas a avoir juste 22 en sortie...
Marsh Posté le 12-11-2004 à 13:03:48
#! /bin/sh
cat /etc/services | grep $1 | cut -f3 | cut -d "/" -f1
un script sed est possible si tu veux vraiment mais ces $&ùé"é de tab sont dérangeants.
Marsh Posté le 12-11-2004 à 13:38:23
wai ta soluce est pas mal mais bon c'est pas drole a faire alors que y'a un moyen de tout farie avec une expression reguliere et un sed...
ps. j'avais deja demander de l'aide pour le meme exemple et on m'avais donné une réponse similaire a la tienne mais la j'essaye de bien comprendre les regexp
voila ce que j'ai pour l'instant
Citation : sed -e 's#^ssh.*\([0-9]\{2,\}\).*tcp.*$#\1#' /etc/services |
m'affiche tout le fichier /etc/services mais change la ligne :
ssh 22/tcp # ssh login
en
22
mais par contre je ne sais si il est possible d'avoir en sortie seulement la ou les ligne modifiées
Marsh Posté le 12-11-2004 à 16:19:37
c'est bon j'ai trouvé: option -n avec /p comme flag ca donne
Citation : |
Marsh Posté le 12-11-2004 à 00:14:54
voila je voudrai par exemple editer le fichier /etc/services et recupere le port d'un service préciser sur la sortie standard
dans vi j'ai reussi a l'aide de %s/// de faire ce que je veux sur la ligne mais en passant a sed j'y arrive pas afficehr le resultat de la meme expression
$cat /etc/services | sed -e s/^ssh.*\([0-9]\{2,\}\).tcp.*$/\1
le s//\1 est tout droit sorti de vi mais j'ai ca comme erreur
sed: -e expression n°1, caractère 28: Commande `s' inachevée
et aussi je sais que -i permet de spécifier un fichier, rendant le cat inutile
merci d'avance