Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/12/2007, 18h36   #1
Membre du Club
 
Inscription : mars 2006
Messages : 158
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 158
Points : 48
Points : 48
Par défaut Traitement ligne par ligne, variable

Salut,

je bute sur le pb suivant :

un fichier 8.txt contient des centaines de lignes dans ce genre

Code :
1
2
3
4
%Exp1%\Exp2\nom1
%Exp4%\nom2
%Exp2%\nom3 nom7
...
je souhaite que pour la totalité du fichier 8.txt, chaque ligne soit lue et enregistrée comme une variable provisoire et que cette variable soit reportée (à un emplacement précis) dans un autre fichier (9.txt). Donc, une fois que la ligne (i-1) est reportée dans 9.txt, on passe à la ligne i et ainsi de suite jusqu'à ce qu'on ait atteint la fin du fichier 8.txt.
Avant d'envisager de placer ces variables à un emplacement précis d'un fichier (contenant lui aussi plusieurs centaines de lignes), j'aimerais au moins arriver à le faire dans un simple fichier vierge (z.txt)

Après de nombreuses recherches, j'ai cru comprendre qu'il était préférable d'utiliser "while read ligne" plutot qu'une boucle "for i in 8.txt". Voilà où j'en suis pitoyablement arrivé :


Code :
while read line ; do var=$line ; echo $var >> z.txt ; var= ; done < 8.txt
ça a l'air de marcher mais ça me semble hasardeux, et de plus, ce qui est super gênant, c'est que ça hache les lignes contenant des espaces et que ça enlève des caractères spéciaux tels que les antislash

J'ai vu par ailleurs un tas d'autres commandes, telles que perl, awk... et là je commence sérieusement à m'embrouiller. Est-ce que vous pourriez me donner une piste supplémentaire orientée vers la solution recherchée ?

Merci
eZula est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2007, 19h32   #2
Membre Expert
 
Avatar de jlliagre
 
Inscription : juin 2007
Messages : 969
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2007
Messages : 969
Points : 1 376
Points : 1 376
Code :
while read -r line ; do var="$line" ; printf "%s\n" "$var" >> z.txt ; var= ; done < 8.txt
jlliagre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2007, 23h52   #3
Membre du Club
 
Inscription : mars 2006
Messages : 158
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 158
Points : 48
Points : 48
Ok, merci jlliagre ça marche bien. Néanmoins il reste un souci : comme dit plus haut, cette variable $var doit être également insérée dans un autre fichier (11.txt et non pas 9.txt comme dit plus haut).
Pour cela j'utilise sed car la variable doit apparaitre sous chaque ligne commençant par un mot-clé, voici grossomodo la commande à partir de ce que tu as proposé :

Code :
while read -r line ; do var="$line" ; printf "%s\n" "$var" >> z.txt ; sed '/^Mot clé/s/$/\necho phrase1 "$var" phrase2/' 10.txt > 11.txt ; var= ; done < 8.txt
et en fait, dans le fichier 11.txt c'est "$var" qui apparait à chaque fois et non pas les valeurs successives de cette variable. J'ai essayé avec des guillemets simples et ça ne donne rien de plus

Vois-tu une solution ?
eZula est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2007, 06h23   #4
Membre Expert
 
Avatar de jlliagre
 
Inscription : juin 2007
Messages : 969
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2007
Messages : 969
Points : 1 376
Points : 1 376
La commande devient trop complexe pour tenir raisonnablement sur une seule ligne.

Remet çà en forme et envoie un exemple de fichier 10.txt.
jlliagre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2007, 10h09   #5
Membre du Club
 
Inscription : mars 2006
Messages : 158
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 158
Points : 48
Points : 48
Salut,

pour la mise en forme, j'ai tenté comme ceci dans un script

Code :
1
2
3
4
5
6
while read -r line ; 
do var="$line" ; 
printf "%s\n" "$var" >> z.txt ; 
sed '/^Mot clé/s/$/\necho phrase1 "$var" phrase2/' 10.txt > 11.txt ; 
var= ; 
done < 8.txt
Il ne se passe rien, alors que dans le terminal ça fonctionne.

Le fichier 10.txt, de n lignes, contient ce schéma :

Code :
1
2
3
4
5
6
Mot clé "$var1" phrase1
Mot clé "$var2" phrase1
Mot clé "$var3" phrase1
Mot clé "$var4" phrase1
...
Mot clé "$varn" phrase1
Le but c'est que dans ce fichier 11.txt, on retrouve ceci :

Code :
1
2
3
4
5
6
7
8
9
Mot clé "$var1" phrase3
phrase2 "$var1" phrase3
Mot clé "$var2" phrase3
phrase2 "$var2" phrase3
Mot clé "$var3" phrase3
phrase2 "$var3" phrase3
...
Mot clé "$varn" phrase3
phrase2 "$varn" phrase3
Chaque "phrase*" peut contenir des caractères spéciaux dans le genre "", \, %

Le pb est donc qu'en lieu et place de "$vari" (variable var i), il y ait chaque fois la valeur qu'elle prend au fur et à mesure de l'exécution de la "boucle" while read line
eZula est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2007, 12h29   #6
Membre Expert
 
Avatar de jlliagre
 
Inscription : juin 2007
Messages : 969
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juin 2007
Messages : 969
Points : 1 376
Points : 1 376
Peux tu envoyer un fichier 10.txt qui correspond au 8.txt original:
%Exp1%\Exp2\nom1
%Exp4%\nom2
%Exp2%\nom3 nom7

et le fichier 11.txt attendu avec ces données.
jlliagre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2007, 12h42   #7
Membre habitué
 
Inscription : janvier 2007
Messages : 148
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 148
Points : 145
Points : 145
un script awk n'est pas plus indiqué pour ce genre de traitement ?
Delwyn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2007, 13h40   #8
Membre du Club
 
Inscription : mars 2006
Messages : 158
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 158
Points : 48
Points : 48
je regrette et sais que ça va compliquer la chose, mais je ne peux envoyer sur un forum public les fichiers originaux tels qu'ils sont, en effet ils contiennent des données nominatives personnelles, espérant que tu puisses le comprendre malgré l'exigeance de ma demande.

J'essaie de reprendre le pb plus clairement si tu es d'accord, car je pense que mes explications sont un peu brouillonnes :

Le fichier 8.txt,comportant n lignes, et issu de diverses opérations de mise en forme d'une base de données désordonnée, contient ce schéma :

Code :
1
2
3
4
5
"$var1"
"$var2"
"$var3"
...
"$varn"
Toutes ces variables peuvent contenir des caractères spéciaux comme \, %
Exemple :

Code :
1
2
3
4
%Paul%\Dupont
%Jacques%\Blanc Imbert
...
%Pierre%\Jacques\Henri Mathieu
L'autre fichier 10.txt, issu de deux opérations de mise en forme supplémentaires sur le précédent fichier 8.txt, et se présente comme ceci :

Code :
1
2
3
4
5
6
Mot clé "$var1" phrase1
Mot clé "$var2" phrase1
Mot clé "$var3" phrase1
Mot clé "$var4" phrase1
...
Mot clé "$varn" phrase1
Exemple :

Code :
1
2
3
4
Puisque "%Paul%\Dupont" alors
Puisque "%Jacques%\Blanc Imbert" alors
...
Puisque "%Pierre%\Jacques\Henri Mathieu" alors
Le "Mot clé" du schéma du fichier 10.txt est donc : Puisque (chaque ligne du fichier 10.txt commence donc par le mot Puisque)
La "phrase1" du schéma du fichier 10.txt est donc : alors

L'algorithme recherché est le suivant :

Citation:
pour chaque ligne i lue du fichier 10.txt
assigner la ligne i à la variable var
copier la valeur de cette variable var dans le fichier z.txt
copier la valeur de cette variable var sous chaque ligne du fichier 10.txt qui commence par le mot Puisque
réinitialiser la variable var
Le résultat attendu est le suivant :
  • z.txt

Code :
1
2
3
4
5
$var1
$var2
$var3
...
$varn
Exemple :

Code :
1
2
3
4
%Paul%\Dupont
%Jacques%\Blanc Imbert
...
%Pierre%\Jacques\Henri Mathieu
  • 11.txt

Code :
1
2
3
4
5
6
7
Puisque "%Paul%\Dupont" alors
vérifier que "%Paul%\Dupont" est bien présent
Puisque "%Jacques%\Blanc Imbert" alors
vérifier que %Jacques%\Blanc Imbert" est bien présent
...
Puisque "%Pierre%\Jacques\Henri Mathieu" alors
vérifier que "%Pierre%\Jacques\Henri Mathieu" est bien présent
Est-ce que c'est suffisament clair ?
eZula est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2007, 14h47   #9
Membre habitué
 
Inscription : janvier 2007
Messages : 148
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 148
Points : 145
Points : 145
Citation:
Leve la main au fond
Euh moi jai pas tout compris =)

Tu as deux fichiers en entrée 8.txt et 10.txt :

8.txt :
Code :
1
2
3
4
5
 
%Paul%\Dupont
%Jacques%\Blanc Imbert
...
%Pierre%\Jacques\Henri Mathieu

10.txt
Code :
1
2
3
4
Puisque "%Paul%\Dupont" alors
Puisque "%Jacques%\Blanc Imbert" alors
...
Puisque "%Pierre%\Jacques\Henri Mathieu" alors
Et tu veux obtenir le fichier
11.txt
Code :
1
2
3
4
5
6
7
Puisque "%Paul%\Dupont" alors
vérifier que "%Paul%\Dupont" est bien présent
Puisque "%Jacques%\Blanc Imbert" alors
vérifier que %Jacques%\Blanc Imbert" est bien présent
...
Puisque "%Pierre%\Jacques\Henri Mathieu" alors
vérifier que "%Pierre%\Jacques\Henri Mathieu" est bien présent
D'après ce que tu nous a dis voici les infos :
Citation:
Chaque ligne du fichier 10.txt commence donc par le mot Puisque
J'aimerais savoir :
- Si variable "%Paul%\Dupont" est succédé par le mot clé alors".
- Si les données de la nouvelle ligne en dehor de la variable sont fixes.


je verrais alors un truc comme ca :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
awk '
BEGIN{
 
debut="Puisque";
i_debut=length(debut);
 
succede="alors";
 
debut_new_line="vérifier que ";
fin_new_line=" est bien présent";
}
{
 i_succede=index ($0,succede);
 variable=substr($0,i_debut,(i_succede-i_debut);
 print("%s",succede);
 print ("%s%s%s",debut_new_line,variable,fin_new_line);
}
' 10.txt > 11.txt
Il y'a certainement mass faute de syntaxe dans ce script mais j'ai pas de quoi tester.

ps : je n'ai pas vu la différence entre le fichier 8.txt et z.txt de ton exemple
Delwyn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2007, 15h05   #10
Membre du Club
 
Inscription : mars 2006
Messages : 158
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 158
Points : 48
Points : 48
Citation:
- Si variable "%Paul%\Dupont" est succédé par le mot clé alors".
oui, tout à fait, chaque ligne du fichier 10.txt commencent par puisque et se terminent par alors, au milieu, la variable du fichier 8.txt

Citation:
- Si les données de la nouvelle ligne en dehor de la variable sont fixes.
oui aussi, la nouvelle ligne doit tjs commencer par "vérifier que" et se terminer par "est bien présent"

Je ne connais pas du tout le langage awk - bien qu'y ayant été initié il y a quelques années en fac - par contre je ne vois aucune référence au fichier 8.txt dans le script que tu proposes, c'est normal ?

Citation:
je n'ai pas vu la différence entre le fichier 8.txt et z.txt de ton exemple
oui en fait c'est vrai, c'est juste une copie du fichier 8.txt. Un simple cat 8.txt > z.txt devrait suffire. Mais cet aspect n'est pas très important et à la limite optionnel, l'essentiel c'est d'arriver à ce que la valeur de la variable s'affiche dans la deuxième ligne de 11.txt (sous chaque ligne "puisque $var alors")
eZula est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2007, 15h47   #11
Membre habitué
 
Inscription : janvier 2007
Messages : 148
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 148
Points : 145
Points : 145
Citation:
Je ne connais pas du tout le langage awk - bien qu'y ayant été initié il y a quelques années en fac - par contre je ne vois aucune référence au fichier 8.txt dans le script que tu proposes, c'est normal ?
Oui, ton fichier 10.txt comporte déjà la variable, on va simplement la récupéré, si tu ne connasi pas le awk je t'explique rapido :

Le awk prend en entré un flux, ici un fichier, et le lit ligne par ligne. Le traitement déclaré entre les quotes est un traitement fait pour chaque ligne.

Avant de lire une ligne execution du bloc
Code :
1
2
3
4
 
BEGIN{
// instructions
}
Pour chaque ligne lu execution des instructions contenues dans les balises suivantes

Je commente :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 
# appel du binaire awk
awk '
# block lu une fois au début du traitement
BEGIN{
 
     #chaine entière devant la variable d'une ligne du fichier 10.txt
     debut="Puisque";
     #récupération de la longueur de la chaine
     i_debut=length(debut);
 
     # chaine présente juste après la variable contenue dans la ligne du fichier 10.txt
     succede="alors";
 
     #variables nécessaire au formatage de la nouvelle ligne
     debut_new_line="vérifier que ";
     fin_new_line=" est bien présent";
}
# block executé sur chaque ligne, la ligne courante est récupérée dans la variable $0
{
     #récupération de l'index de caractère succedant la variable
     i_succede=index ($0,succede);
     # récupération de la variable en découpant la ligne courante à partir du caractère à l'indice i_succede, pour une longueur de i_succede-i_debut
     variable=substr($0,i_debut,(i_succede-i_debut));
 
     #affiche de la ligne lue (celle-ci ne change pas)
     print("%s",$0);
     # on intercal juste après la ligne lue, la nouvelle ligne qui est formaté :
     # vérifier que VARIABLE est bien présent
     print ("%s%s%s",debut_new_line,variable,fin_new_line);
}
' 10.txt > 11.txt
ATTENTION : y'avait des erreurs dans ce que j'ai ecrit plus, encore une fois je n'ai pas pu tester j'ai pas le mattos pour.

ATTENTION2 : dans le script il faut absolument que la chaine définit dan le block BEGIN : succede ne puisse pas être inclus dans la variableà récupérer, sinon l'indice obtenu est érroné.
Delwyn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2007, 15h49   #12
Expert Confirmé Sénior
 
Inscription : janvier 2007
Messages : 8 743
Détails du profil
Informations personnelles :
Âge : 54

Informations forums :
Inscription : janvier 2007
Messages : 8 743
Points : 9 978
Points : 9 978
Citation:
Envoyé par eZula Voir le message
Je ne connais pas du tout le langage awk - bien qu'y ayant été initié il y a quelques années en fac
awk n'est pas un langage, mais un utilitaire (un binaire, un éxécutable, un programme, une application, etc etc..)



__________________
"Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

Consultant indépendant.
Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
C, Fortran, XWindow/Motif, Java

Je ne réponds pas aux MP techniques
souviron34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2007, 16h38   #13
Membre du Club
 
Inscription : mars 2006
Messages : 158
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 158
Points : 48
Points : 48
Citation:
awk n'est pas un langage, mais un utilitaire
merci pour la précision

sinon ça a l'air de fonctionner, à ceci près que le fichier 11.txt se présente comme ceci

Citation:
%s Puisque "%Paul%\Dupont" alors
%s%s%s vérifier que t "%Paul%\Dupont" est bien présent
%s Puisque "%Jacques%\Blanc Imbert" alors
%s%s%s vérifier que t "%Jacques%\Blanc Imbert" est bien présent
les deux pbs étant :
- ce t avant $var (le t est en fait la dernière lettre du mot précédent $var dans la première ligne, ce n'est pas puisque le vrai mot-clé, mais une phrase de deux mots sans caractères spéciaux ; est-ce que ça peut correspondre à ton Attention2 ?
- ces %s%s%s
- dans la première ligne de 11.txt, il y a trois espaces entre $var et "alors", au lieu d'un, même chose entre $var et "est bien présent" pour la deuxième ligne de 11.txt
eZula est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2007, 16h51   #14
Membre habitué
 
Inscription : janvier 2007
Messages : 148
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 148
Points : 145
Points : 145
On va y arriver

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# appel du binaire awk
awk '
# block lu une fois au début du traitement
BEGIN{

     #chaine entière devant la variable d'une ligne du fichier 10.txt
     debut="Puisque";
     #récupération de la longueur de la chaine
     i_debut=length(debut)+2;

     # chaine présente juste après la variable contenue dans la ligne du fichier 10.txt
     succede="alors";
     
     #variables nécessaire au formatage de la nouvelle ligne
     debut_new_line="vérifier que ";
     fin_new_line=" est bien présent";
}
# block executé sur chaque ligne, la ligne courante est récupérée dans la variable $0
{
     #récupération de l'index de caractère succedant la variable
     i_succede=index ($0,succede);
     # récupération de la variable en découpant la ligne courante à partir du caractère à l'indice i_succede, pour une longueur de i_succede-i_debut
     variable=substr($0,i_debut,(i_succede-i_debut-1));
    
     #affiche de la ligne lue (celle-ci ne change pas)
     printf("%s",$0);
     # on intercal juste après la ligne lue, la nouvelle ligne qui est formaté :
     # vérifier que VARIABLE est bien présent
     printf ("%s%s%s",debut_new_line,variable,fin_new_line);
}
' 10.txt > 11.txt
Voila ensuite joue avec les variables debut_new_ligne, et fin_new_ligne pour ajouter ou supprimer les espaces, ou avec les index que j'ai mis en rouge .

Bon courage
Delwyn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2007, 19h50   #15
Membre du Club
 
Inscription : mars 2006
Messages : 158
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 158
Points : 48
Points : 48
je suis désolé, mais la dernière modif a généré un trop grand nombre d'erreur. Après avoir bataillé pour essayer de comprendre, j'ai opté pour une autre direction. Formulons le pb complètement autrement, et oublions quelques instants pierre, paul et leur antislash de malheur :

soit un fichier a.txt contenant

Code :
1
2
3
4
coucou
bonjour 
salut
...
On double les lignes du fichier a.txt et on les trie dans l'ordre pour qu'au final les mêmes lignes se succèdent :

Citation:
cat a.txt > b.txt && cat b.txt >> a.txt && sort a.txt > e.txt
ce code plus ou moins dégueulasse donne le fichier e.txt suivant :

Code :
1
2
3
4
5
6
7
coucou
coucou
bonjour 
bonjour 
salut
salut
...

Maintenant, pour rester dans l'esprit du problème initial, il reste deux choses à faire :
  • ajouter au début de chaque ligne impaire l'expression Puisque " et à chaque fin de ligne impaire " alors
  • ajouter au début de chaque ligne paire l'expression vérifier que " et à chaque fin de ligne paire " est bien présent

Bon par contre, je n'arrive pas à attraper les lignes paires ou impaires via sed. J'ai testé diverses combinaisons comme par exemple :

Code :
sed '2,~2' s/^/puisque "/g' e.txt > f.txt
Je suis sur que c'est possible car il semblerait qu'il l'ait fait pour les deux lignes suivant la première du fichier e.txt, pas avec ce code mais un autre similaire que je ne retrouve plus. La syntaxe ne doit pas être correcte.

Qu'est-ce que vous en pensez ?
eZula est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2007, 21h30   #16
Membre habitué
 
Inscription : janvier 2007
Messages : 148
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 148
Points : 145
Points : 145
J'ai enfin pu tester

Voila ca devrait mieux marcher :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
#!/bin/sh
 
awk 'BEGIN{
 
     debut="Puisque";
     i_debut=length(debut)+2;
 
     succede="alors";
 
     debut_new_line="verifier que ";
     fin_new_line=" est bien present";
}
{
     i_succede=index ($0,succede);
     variable=substr($0,i_debut,(i_succede-i_debut-1));
 
     printf("%s\n",$0);
     printf("%s%s%s\n",debut_new_line,variable,fin_new_line);
}
' 10.txt > 11.txt
Delwyn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2007, 22h16   #17
Membre du Club
 
Inscription : mars 2006
Messages : 158
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 158
Points : 48
Points : 48
Ok, merci ça fonctionne avec "verifier que " et " est bien present"

Le pb c'est que ce sont des exemples et que ces expressions contiennent en réalité des >>, des \, des " et des % et on dirait que ça buggue

Code :
1
2
awk: cmd. ligne:9:      fin_new_line=" >> "Expression_réelle"";
awk: cmd. ligne:9:                                      ^ la barre oblique inverse n'est pas le dernier caractère sur la ligne
Pour la parenthèse, que penses-tu de l'approche proposée à 19h50 ?
eZula est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2007, 23h17   #18
Membre habitué
 
Inscription : janvier 2007
Messages : 148
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 148
Points : 145
Points : 145
Les problème de syntaxe sont du au caractères spéciaux qui sont à protéger par le caractère \ (antislash)

Donc une chaine contenant " doit proteger son caractère : \"

Ce qui donne :
Code :
1
2
 
variable="Le \"Shell\" c'est rigolo"
Du coup pour un antislash ca fait \\

Les caractères que tu as sité : > et % ne sont pas a proteger.

Sinon pour ce qui est de l'approche dite de pair/impair je trouve ca un peu trop bidouille, j'espere que ce n'est pas du code qui sera à maintenir =)

Il y'a aussi la possibilité d'utiliser ton premier fichier 8.txt

Tu sembles avoir toute les données en main

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/bin/sh
 
debut_ligne1="debut"
fin_ligne1="fin"
 
debut_ligne2="debut2"
fin_ligne2="fin2"
 
while read variable
do
 
    echo "${debut_ligne1} ${variable} ${fin_ligne1}";
    echo "${debut_ligne2} ${variable} ${fin_ligne2}";
done < 8.txt
Delwyn est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/12/2007, 00h23   #19
Membre du Club
 
Inscription : mars 2006
Messages : 158
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 158
Points : 48
Points : 48
Ecoute Delwyn, là je crois que c'est parfait et te remercie infiniment

juste une dernière question si tu permets : par rapport à cette histoire de sed et de lignes paires et impaires, quelle aurait été la bonne syntaxe ? comment faire par exemple pour faire simple ajouter un Z à chaque début de ligne impaire d'un fichier ?

c'est vraiment par curiosité et aussi parceque j'ai passé des heures dessus
eZula est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h37.


 
 
 
 
Partenaires

Hébergement Web