IPB

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> Sed, J'y comprend rien !
Options
hellomorld
posté 13 May 2008, 16:33
Message #1


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 6 150
Inscrit : 31 Oct 2003
Membre no 11 118



Bonjour,

Malgré la lecture de tutoriaux sur sed j'ai beaucoup de mal !
Imaginons que je veuille filtrer le contenu d'un fichier pour ne garder que les lignes contenant l'ip "192.168.1.16", je fais quoi ?

j'ai tenté :
CODE
seb -n /192.168.1.16/d /mon/fichier


mais ça ne me retourne rien.

CODE
seb /192.168.1.16/d /mon/fichier

ça me retourne tout

CODE
seb -n /^192.168.1.16/d /mon/fichier

ça ne me retourne rien.

[tiny]Quel est le cerveau malade qui a pondu cette syntaxe de taré ? biggrin.gif
[/tiny]

Ce message a été modifié par hellomorld - 13 May 2008, 16:34.


--------------------
Go to the top of the page
 
+Quote Post
_Olivier_
posté 13 May 2008, 16:40
Message #2


- Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 125
Inscrit : 23 Aug 2002
Lieu : Grandmetz (Belgique, Leuze)
Membre no 3 222



CODE

grep "192.168.1.16" /chemin/fichier


Après suivant ce qu'il y a sur ta ligne contenant ton IP, il sera peut-être nécessaire de "piper" ton grep avec un sed pour faire du nettoyage.
Donne nous un exemple concret.


--------------------
* Rejoignez-nous sur le chan IRC de MacBidouille !
Go to the top of the page
 
+Quote Post
schlum
posté 13 May 2008, 17:31
Message #3


Terminaltor
Moderating Machine
*****

Groupe : Admin
Messages : 24 449
Inscrit : 25 Oct 2002
Lieu : Jeumont (59)
Membre no 4 319



seb ? L'électroménager et les expression régulières, pas sûr que ça fasse bon ménage tongue.gif

Utilise "grep" pour ce que tu veux faire

PS : cette syntaxe est très logique wink.gif


--------------------
          I think therefore I Mac          
Go to the top of the page
 
+Quote Post
noop
posté 14 May 2008, 08:13
Message #4


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 964
Inscrit : 3 Nov 2005
Membre no 49 239



CITATION(hellomorld @ 13 May 2008, 17:33) [snapback]2662820[/snapback]

j'ai tenté :
CODE
seb -n /192.168.1.16/d /mon/fichier



Essaye

CITATION
moulinex -n /192.168.1.16/d /mon/fichier
laugh.gif

grep est parfait pour ça. Grep filtre le contenu des fichiers, sed permet de filtrer et faire des modifications sur les fichiers
Go to the top of the page
 
+Quote Post
Gotchi
posté 14 May 2008, 08:26
Message #5


Macbidouilleur de Nancy
*****

Groupe : Modérateurs
Messages : 8 787
Inscrit : 16 Nov 2001
Lieu : Clermont-Ferrand
Membre no 1 308



CITATION(hellomorld @ 13 May 2008, 17:33) [snapback]2662820[/snapback]

Bonjour,

Malgré la lecture de tutoriaux sur sed j'ai beaucoup de mal !
Imaginons que je veuille filtrer le contenu d'un fichier pour ne garder que les lignes contenant l'ip "192.168.1.16", je fais quoi ?

j'ai tenté :
CODE
seb -n /192.168.1.16/d /mon/fichier


mais ça ne me retourne rien.

ça ne retourne même pas un message d'erreur du genre "-bash: seb: command not found"?


--------------------
pour suivre mes tests de produits sur Amazon : Mon profil Amazon
Go to the top of the page
 
+Quote Post
hellomorld
posté 18 May 2008, 05:58
Message #6


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 6 150
Inscrit : 31 Oct 2003
Membre no 11 118



CITATION(Gotchi @ 14 May 2008, 09:26) [snapback]2663411[/snapback]

CITATION(hellomorld @ 13 May 2008, 17:33) [snapback]2662820[/snapback]

j'ai tenté :
CODE
seb -n /192.168.1.16/d /mon/fichier


mais ça ne me retourne rien.

ça ne retourne même pas un message d'erreur du genre "-bash: seb: command not found"?


Non, car dans le terminal j'ai tapé la bonne commande smile.gif

Bon finalement sed c'est une syntaxe bien trop alambiquée pour moi... je ne la retiendrai jamais !
Je préfère de beaucoup seb, car seb, c'est bien ! laugh.gif


--------------------
Go to the top of the page
 
+Quote Post
Demon_Bleu
posté 14 Feb 2011, 16:24
Message #7


Nouveau Membre


Groupe : Membres
Messages : 1
Inscrit : 14 Feb 2011
Lieu : Marseille
Membre no 164 625



Salut,

La commande "sed" (stream editor) est un éditeur de texte non interactif. Elle permet d'automatiser le traitement de fichiers texte. La syntaxe de base:
Code
sed [-n] action [fichier_1 ...]

// mais il y en a plusieurs syntaxes ! wink.gif une action possède la syntaxe suivante:
Code
[adresse[,adresse]]commande[arguments]

donc, une action peut avoir 0, 1 ou 2 adresses.
les adresses sont:
s'il y a 1 adresse
Code
nl        Ligne nl
$         Dernière ligne
/ER/      Lignes correspondant à l'expression régulière

s'il y a 2 adresses
Code
nl1,nl2            Ligne nl1 jusqu'à Ligne nl2  
/ER1/,/ER2/        La première ligne traité sera la première correspondant à ER1 et jusqu'à la dernière qui sera ER2

Le traitement se poursuivra sur toutes les lignes comprises entre ER1 et ER2 (y comprises)
Les principales commandes sont:
CODE

Commande arguments adresse (max) Signification
d aucun 2 Ne pas afficher les lignes spécifiées (d: delete)
p aucun 2 Affiche les lignes spécifiées (p: print)
s /ER/rempl/[g] 2 Substitution de ER par rempl sur les lignes spécifiées.


Dans ton cas, si tu écris:
Code
sed -n /192.168.1.16/d mon_ficher.txt

- l'option -n spécifie à sed de NE PAS REAFFICHER tout le fichier
- la commande d spécifie a sed de ne pas afficher les lignes spécifiées
donc c'est normal que sed ne retourne rien. Il faut utiliser la commande p
Normalement si t écris:
Code
sed -n /192.168.1.16/p mon_ficher.txt

tu devras voir affiché la ligne que tu recherches.

sed est une commande très puissante et très utile en programmation lorsque tu as beaucoup de fichiers texte à traiter. Pour faire une simple recherche dans un fichier, c'est plus simple d'utiliser la commande "grep" car avec "sed" c'est comme si tu voulais remplir la gamelle de ton chien avec un tuyau de pompiers laugh.gif
Par contre si tu as une centaine de fichiers texte (carnet d'adresses) et que tu veux récupérer (modifier) des lignes (uniquement des adresses mail par exemple ) et créer une liste de contacts ( créer un fichier mes_contacts.txt) tu peux faire appel à sed. Il y a des nombreux tutos, celui du www.siteduzero.com est très bien.

Il y a plusieurs façons de faire la même chose mais sed est seulement une (bonne) option de plus.

@ +

Ce message a été modifié par Demon_Bleu - 14 Feb 2011, 17:17.


--------------------
Rajoute de la vie aux années et non des années à la vie !

--------------------------------------------------------------
iBook G4 933 MHz, iMac ic2D 3,06 GHz
Go to the top of the page
 
+Quote Post
darenzana
posté 16 Feb 2011, 00:47
Message #8


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 1 745
Inscrit : 13 Nov 2006
Membre no 72 823



hé bin! s'inscrire juste pour poster une explication détaillée sur sed, je dis bravo! et bienvenue wink.gif


--------------------
Macbook Pro 15" Core 2 Duo 2.33GHz, 3Go RAM, Mac OS X 10.6.8 | Macbook Air 13" mi-2011 Core i5, Mac OS X 10.8
NAS Synology DS-110+
iPhone 6 silver 64Go - forfait SFR Red 3Go
Go to the top of the page
 
+Quote Post
hellomorld
posté 16 Feb 2011, 06:03
Message #9


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 6 150
Inscrit : 31 Oct 2003
Membre no 11 118



Citation (darenzana @ 16 Feb 2011, 00:47) *
hé bin! s'inscrire juste pour poster une explication détaillée sur sed, je dis bravo! et bienvenue wink.gif


Et près de 3 ans après la demande ! Moi aussi je dis bravo et merci !


--------------------
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



Nous sommes le : 19th April 2024 - 18:16