PHWinfo banniere

Titres
PORTAIL ANNUAIRE ARTICLES COMPARATEUR HÉBERGEURS DEVIS FORUMS RÉDUCTEUR D'URL
Précédent   PHWinfo > Forums Hébergement > Forum Serveur - Sécurité et techniques > linux.debian.user.french > script bash
S'inscrire FAQ Membres Recherche Messages du jour Marquer les forums comme lus
linux.debian.user.french Forum sur Linux Debian. Debian-user-french@lists.debian.org

script bash

Réponse
 
LinkBack Outils de la discussion
Vieux 19/03/2008, 10h30   #1
Tahar
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut script bash

Bonjour à tous,

Je voudrais solliciter votre aide pour un petit script que j'ai fait mais qui ne marche pas exactement comme je le veux.

Alors voilà; j'ai un fichier texte de deux colonnes séparées par une tabulation je voudrais produire un autre fichier en le parcourant ligne par ligne et en rajoutant des paramètres pour chaque ligne

mon fichier de départ est sctructuré comme suit

lingne1colonne1 ligne1colonne2
ligne2colonne1 ligne2colonne2
ligne3colonne1 ligne3colonne2
..
..
..
..


j'ai utilisé awk pour retenir les champs $1 et $2 dans des variables et redirigé le résultat dans un autre fichier avec echo "mes rajouts $var1 mes rajouts $var2" >> fich_resultat

sauf que au lieu d'avoir une seul ligne j'ai l'ensemble de $1 et $2 de toutes les lignes quelqu'un pourrait me dire comment faire ??

voici mon script

!/bin/bash

while read line
do

champ1=$(awk -F" " '{print($1)}' test)
champ2=$(awk -F" " '{print($2)}' test)

echo "ou=$champ1 dc=$champ2">> resultat

done < test


merci pour votre aide

  Réponse avec citation
Vieux 19/03/2008, 10h50   #2
Edi Stojicevic
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: script bash

* Tahar <tahar_ba@yahoo.fr> [2008-03-19 10:19:20 +0100] wrote :

> Bonjour à tous,


Salut,

> Je voudrais solliciter votre aide pour un petit script que j'ai fait mais qui ne marche pas exactement comme je le veux.


Tu as une liste de diffusion dediee pour ca :

http://debianworld.org/?q=node/12

Je la met en copie de ce mail ...

> Alors voilà; j'ai un fichier texte de deux colonnes séparées par une tabulation je voudrais produire un autre fichier en le parcourant ligne par ligne et en rajoutant des paramètres pour chaque ligne
>
> mon fichier de départ est sctructuré comme suit
>
> lingne1colonne1 ligne1colonne2
> ligne2colonne1 ligne2colonne2
> ligne3colonne1 ligne3colonne2


En sed :

sed 's/\(.*\)\t*\(.*\)/ ou = \1 dc = \2/' file > new file

a+

--
.. ''`. (\___/) E d i S T O J I C E V I C
: :' : (='.'=) http://www.debianworld.org
`. `~' (")_(") GPG: 0x1237B032
`-

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/DebFrFrenchLists
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
  Réponse avec citation
Vieux 19/03/2008, 10h50   #3
Edi Stojicevic
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: script bash

* Tahar <tahar_ba@yahoo.fr> [2008-03-19 10:19:20 +0100] wrote :

> Bonjour à tous,


Salut,

> Je voudrais solliciter votre aide pour un petit script que j'ai fait mais qui ne marche pas exactement comme je le veux.


Tu as une liste de diffusion dediee pour ca :

http://debianworld.org/?q=node/12

Je la met en copie de ce mail ...

> Alors voilà; j'ai un fichier texte de deux colonnes séparées par une tabulation je voudrais produire un autre fichier en le parcourant ligne par ligne et en rajoutant des paramètres pour chaque ligne
>
> mon fichier de départ est sctructuré comme suit
>
> lingne1colonne1 ligne1colonne2
> ligne2colonne1 ligne2colonne2
> ligne3colonne1 ligne3colonne2


En sed :

sed 's/\(.*\)\t*\(.*\)/ ou = \1 dc = \2/' file > new file

a+

--
.. ''`. (\___/) E d i S T O J I C E V I C
: :' : (='.'=) http://www.debianworld.org
`. `~' (")_(") GPG: 0x1237B032
`-

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/DebFrFrenchLists
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
  Réponse avec citation
Vieux 19/03/2008, 11h00   #4
Stéphane
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: script bash

Et voila le résultat :

#!/bin/bash

while read line
do
champ1=$(echo "$line"|awk '{print $1}')
champ2=$(echo "$line"|awk '{print $2}')

echo "ou=$champ1 dc=$champ2" >> resultat

done < test

Sinon, une petite astuce, évite d'appeler tes fichiers 'test' car c'est
une commande unix.


Bonne chance.



Le mercredi 19 mars 2008 à 10:19 +0100, Tahar a écrit :

> Bonjour à tous,
>
> Je voudrais solliciter votre aide pour un petit script que j'ai fait
> mais qui ne marche pas exactement comme je le veux.
>
> Alors voilà; j'ai un fichier texte de deux colonnes séparées par une
> tabulation je voudrais produire un autre fichier en le parcourant
> ligne par ligne et en rajoutant des paramètres pour chaque ligne
>
> mon fichier de départ est sctructuré comme suit
>
> lingne1colonne1 ligne1colonne2
> ligne2colonne1 ligne2colonne2
> ligne3colonne1 ligne3colonne2
> .
> .
> .
> .
>
>
> j'ai utilisé awk pour retenir les champs $1 et $2 dans des variables
> et redirigé le résultat dans un autre fichier avec echo "mes rajouts
> $var1 mes rajouts $var2" >> fich_resultat
>
> sauf que au lieu d'avoir une seul ligne j'ai l'ensemble de $1 et $2 de
> toutes les lignes quelqu'un pourrait me dire comment faire ??
>
> voici mon script
>
> !/bin/bash
>
> while read line
> do
>
> champ1=$(awk -F" " '{print($1)}' test)
> champ2=$(awk -F" " '{print($2)}' test)
>
> echo "ou=$champ1 dc=$champ2">> resultat
>
> done < test
>
>
> merci pour votre aide


  Réponse avec citation
Vieux 19/03/2008, 11h00   #5
Stéphane
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: script bash

Et voila le résultat :

#!/bin/bash

while read line
do
champ1=$(echo "$line"|awk '{print $1}')
champ2=$(echo "$line"|awk '{print $2}')

echo "ou=$champ1 dc=$champ2" >> resultat

done < test

Sinon, une petite astuce, évite d'appeler tes fichiers 'test' car c'est
une commande unix.


Bonne chance.



Le mercredi 19 mars 2008 à 10:19 +0100, Tahar a écrit :

> Bonjour à tous,
>
> Je voudrais solliciter votre aide pour un petit script que j'ai fait
> mais qui ne marche pas exactement comme je le veux.
>
> Alors voilà; j'ai un fichier texte de deux colonnes séparées par une
> tabulation je voudrais produire un autre fichier en le parcourant
> ligne par ligne et en rajoutant des paramètres pour chaque ligne
>
> mon fichier de départ est sctructuré comme suit
>
> lingne1colonne1 ligne1colonne2
> ligne2colonne1 ligne2colonne2
> ligne3colonne1 ligne3colonne2
> .
> .
> .
> .
>
>
> j'ai utilisé awk pour retenir les champs $1 et $2 dans des variables
> et redirigé le résultat dans un autre fichier avec echo "mes rajouts
> $var1 mes rajouts $var2" >> fich_resultat
>
> sauf que au lieu d'avoir une seul ligne j'ai l'ensemble de $1 et $2 de
> toutes les lignes quelqu'un pourrait me dire comment faire ??
>
> voici mon script
>
> !/bin/bash
>
> while read line
> do
>
> champ1=$(awk -F" " '{print($1)}' test)
> champ2=$(awk -F" " '{print($2)}' test)
>
> echo "ou=$champ1 dc=$champ2">> resultat
>
> done < test
>
>
> merci pour votre aide


  Réponse avec citation
Vieux 19/03/2008, 12h00   #6
Alexandre
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: script bash

Bonjour, il y peut-être une subtilité qui m'échappe mais pour quoi ne
pas le faire en une ligne?

awk '{print "premier="$1, "second="$2}' essai > resultat

par exemple.

--
---()()()----()()()----()()()--)()()(----)()()(----)()()(---
-()----()--()-()-----()----()--)(----)(-----)(-)(--)(----)(-
()----()----()()()----()()()----)()()(----)()()(----)(----)(

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/DebFrFrenchLists
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
  Réponse avec citation
Vieux 19/03/2008, 12h00   #7
Tahar
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut RE : Re: script bash

  Réponse avec citation
Vieux 19/03/2008, 12h00   #8
Tahar
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut RE : Re: script bash

  Réponse avec citation
Vieux 19/03/2008, 12h00   #9
Edi Stojicevic
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: script bash

* Alexandre <neonoe123321@gmail.com> [2008-03-19 11:55:28 +0000] wrote :

> Bonjour, il y peut-être une subtilité qui m'échappe mais pour quoi ne
> pas le faire en une ligne?
>
> awk '{print "premier="$1, "second="$2}' essai > resultat
>
> par exemple.


D'ou le sed que j'avais donnee Mais effectivement le awk est plus
clair :P

--
.. ''`. (\___/) E d i S T O J I C E V I C
: :' : (='.'=) http://www.debianworld.org
`. `~' (")_(") GPG: 0x1237B032
`-

--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/DebFrFrenchLists
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
  Réponse avec citation
Vieux 19/03/2008, 17h30   #10
Jean-Paul Lacquement
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: script bash

Bonjour,

Perso, je code beaucoup en shell et je n'utilise jamais awk ni perl.
Je préconise sed et grep .
Voici une solution plus simple que d'utiliser awk :

while read variabale1 variable2
do
echo $variable1
echo $variable2
done < mon_fichier

Si le séparateur est un point virgule, il faut changer le "while" en ceci:

while IFS=\; read variable1 variable2

Le lien suivant est très interessant : http://abs.traduc.org/abs-4.2.01-fr/

Cordialement,
Jean-Paul

2008/3/19, Edi Stojicevic <estojicevic@debianworld.org>:
> * Alexandre <neonoe123321@gmail.com> [2008-03-19 11:55:28 +0000] wrote :
>
>
> > Bonjour, il y peut-être une subtilité qui m'échappe mais pour quoi ne
> > pas le faire en une ligne?
> >
> > awk '{print "premier="$1, "second="$2}' essai > resultat
> >
> > par exemple.

>
>
> D'ou le sed que j'avais donnee Mais effectivement le awk est plus
> clair :P
>
>
> --
> . ''`. (\___/) E d i S T O J I C E V I C
> : :' : (='.'=) http://www.debianworld.org
> `. `~' (")_(") GPG: 0x1237B032
> `-

  Réponse avec citation
Réponse


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +1. Il est actuellement 18h03.


Édité par : vBulletin® version 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0 RC5 Tous droits réservés.
Version française #16 par l'association vBulletin francophone
PHWinfo est un site Éducation Sans Frontières ©2000-2008
Ad Management by RedTyger
©Tous droits réservés par les parties respectives
Page generated in 0,16676 seconds with 18 queries