|
|
|
|
||||||
| linux.debian.user.french Forum sur Linux Debian. Debian-user-french@lists.debian.org |
![]() |
|
|
LinkBack | Outils de la discussion |
|
|
#1 |
|
Messages: n/a
Hébergeur: |
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 |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
* 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 |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
* 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 |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
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 |
|
|
|
#5 |
|
Messages: n/a
Hébergeur: |
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 |
|
|
|
#6 |
|
Messages: n/a
Hébergeur: |
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 |
|
|
|
#7 |
|
Messages: n/a
Hébergeur: |
|
|
|
|
#8 |
|
Messages: n/a
Hébergeur: |
|
|
|
|
#9 |
|
Messages: n/a
Hébergeur: |
* 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 plusclair :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 |
|
|
|
#10 |
|
Messages: n/a
Hébergeur: |
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 > `- |
|
![]() |
| Outils de la discussion | |
|
|