|
Bas de page | |
---|---|
Auteur | Sujet : [AWK] Associer des champs à une variable texte |
g-ridaz Steam/XboxLive: Gridaz | Bonjour à tous,
J'arrive pour l'instant à lister les infos qui m'intérèssent grâce à un petit script awk dans une boucle while: while read line echo $line > temp.txt done < $fichier
2/ Sinon j'obtiens donc bien une liste de mes informations qui sort ainsi:
Du coup j'aimerais mettre ces valeurs dans les champs correspondant de ma BDD (pas forcément directement hein ). J'imaginais donc les mettres dans une variable numérotée et ensuite faire un traitement dessus. Exemple 1=id_interface, 2=type, etc
Message cité 1 fois Message édité par g-ridaz le 13-04-2011 à 11:19:49 |
Publicité | Posté le 13-04-2011 à 11:17:20 |
roondar |
Message cité 1 fois Message édité par roondar le 13-04-2011 à 12:38:58 |
g-ridaz Steam/XboxLive: Gridaz |
Le "fichier" source est un ensemble de fichiers dans un dossier, parcouru avec un for. La structure de la BDD est simple, un "champ" pour chaque champ désiré (donc chaque entre |), les fichiers sources ressemblent à ça (plusieurs dizaines de lignes comme ça):
pour ton aide
fichier correspond à un fichier interface, contenant donc plein de lignes comme celle citée plus haut, line à une ligne EDIT2: d'ailleurs ça ne marche pas plus pr le moment, tjr un souci pr le stockage dans une variable, je vois bien la donnée mais il me met une erreur
Message édité par g-ridaz le 13-04-2011 à 14:03:28 |
g-ridaz Steam/XboxLive: Gridaz | Up! |
g-ridaz Steam/XboxLive: Gridaz | Je testerais demain mais ça a l'air pas mal effectivement Je "connaissais" pas la technique
Pas bête, finalement les commandes simples permettent de faire bcp de choses. Est-ce bien compatible avec le fait que je fais un traitement par fichier (j'extrais la date et le hostname du nom_du_fichier)? Ou ça les met tous à la suite ce qu'on semble voir dans ton exemple. Au pire je passe par ma méthode au départ, car si l'extraction des champ est aussi simple que ta commande le laisse supposer c'est bon. Je m'emmerdais avec un cut dernièrement qui posait problème car je n'arrivais pas à le stocker dans une variable incrémentée. Message édité par g-ridaz le 13-04-2011 à 18:55:05 |
roondar | le 'grep . file*' servait juste à te montrer le contenu de mes fichiers, il n'a rien à voir avec le script.
Et sinon par rapport à ton script, ton erreur vient du faire que tu n'entourres pas tes variables par des guillemets et tu as oublier de mettre un "declare" (d'ailleurs on utilise des tableaux pour çà ^^). Message édité par roondar le 13-04-2011 à 19:24:48 |
g-ridaz Steam/XboxLive: Gridaz | J'ai testé avec les guillemets ça ne marchait pas non plus car il ne prenait pas la bonne valeur (mais plus d'erreur command machin), à moins d'une autre erreur
|
twocats | Sinon pour injecter une variable dans awk tu peut faire ça (pas testé) :
--------------- La réponse est 42 |
g-ridaz Steam/XboxLive: Gridaz | Nickel ta solution roondar, ça marche parfaitemet, merci @twocats, en fait je voulais faire l'inverse: mettre la sortie dans une variable Message cité 1 fois Message édité par g-ridaz le 14-04-2011 à 12:28:26 |
Publicité | Posté le 14-04-2011 à 12:27:20 |
roondar |
|
g-ridaz Steam/XboxLive: Gridaz | J'ai un nouveau souci je cherche à comparer deux chaines de caractères:
|
twocats | Les espaces :
--------------- La réponse est 42 |
g-ridaz Steam/XboxLive: Gridaz | en fait j'en avais pas mis au départ mais yen a dans la variable, et donc ça doit foutre la merde au moment du remplacement ouais un peu de mal avec le code done/.. suffit?? EDIT: Non mais j'imagine grep [] done/... Message édité par g-ridaz le 18-04-2011 à 11:41:28 |
g-ridaz Steam/XboxLive: Gridaz | J'ai finalement supprimé les espaces pourtant ça ne marche tjr pas
Message édité par g-ridaz le 18-04-2011 à 14:14:35 |
roondar | Pour des nombres on utilise plutôt l'option "-ne" de test.
Message édité par roondar le 18-04-2011 à 21:13:02 |
mrbebert |
Je comprends pas un truc : pourquoi isoler chaque ligne pour la traiter avec awk alors que le principe de awk est justement d'appliquer un traitement sur chaque ligne
Message cité 1 fois Message édité par mrbebert le 18-04-2011 à 21:34:06 --------------- Doucement le matin, pas trop vite le soir. |
g-ridaz Steam/XboxLive: Gridaz |
|
mrbebert | Je ne sais pas ce que tu veux dire exactement par "passer de fichiers en fichiers" mais une piste peut être de charger chaque fichier "brut" dans une table temporaire et de générer les données finales par des requêtes SQL. C'est tout de même beaucoup plus pratique que du shell quand on parle de sélections ou de jointures --------------- Doucement le matin, pas trop vite le soir. |
g-ridaz Steam/XboxLive: Gridaz |
Cest une idee a laquelle je navais pas pense mais je pense pas que se soit bien possible. Jexpliquerais plus en detail plus tard dans la matinee. Je peux faire du perl aussi mais alors la je connais encore moins |
g-ridaz Steam/XboxLive: Gridaz | Bon c'est parti! J'ai donc 3 types de fichiers: .sys / .int / .vlan .sys contient plusieurs informations sur le système, dont le type de switch (grâce à un OID qui permet d'identifier les différentes séries) .int contient les informations sur les interfaces, ID_Int typiquement .vlan les infos des vlans, sous la forme OID.ID_Vlan = Vlan Description et OID.ID_Vlan = VlanIfIndex, puis ifStackStatus qui permet de connaitre la correspondance entre Vlan et interfaces
Tables SQL VLAN -- l_interface_vlan -- interface --
Message édité par g-ridaz le 19-04-2011 à 14:40:34 |
Publicité | Posté le |
Sujets relatifs | |
---|---|
Découper du texte dans un fichier | [Bash] Modifier une partie d'une variable mais pas tout !! |
[bash] tester si une variable (multivaluée) est vide | [AWK] Recherche sur une RegExp |
[BASH] Récupérer un morceau de variable... | Crée une variable d'environnement permanentes |
shell : ne pas interpreter le $ comme une variable | Comment fixer une variable shell pour tout le monde |
script pour déplacer des fichiers listés dans un fichier texte | Décalration de variable |
Plus de sujets relatifs à : [AWK] Associer des champs à une variable texte |