Sed : insertion lettre a chaque ligne

Résolu
nicdu40 Messages postés 27 Statut Membre -  
nicdu40 Messages postés 27 Statut Membre -
Bonjour,
alors voila ce que je cherche a faire sans succés:
inserrer chaque lettre du fichier B dans A a un emplacement défini


Fichier A:
ABCDEF

Fichier B:
A
B
C


ce que je cherche a faire:

ABCADEF
ABCBDEF
ABCCDEF


j'ai essayé :
#! /bin/bash

while read line
do
for i in $(sed ':z;N;$! bz;s/\n/ /g' B)
do
echo "${line}${i}"
done
done < A

mais ça me met tout a la fin,
et sed sed 's/^../&C/' par exemple me met le C apres les 2 premiers carracteres mais je n'arrive pas a l'adapter. merci de votre aide

5 réponses

zipe31 Messages postés 38797 Statut Contributeur 6 433
 
Salut,

$ cat A
ABCDEF

$ cat B
A
B
C

$ A=$(<A)

$ sed 's/.*/'"${A:0:3}"'&'"${A:3}"'/' B
ABCADEF
ABCBDEF
ABCCDEF

$
1
gnugo
 
Effectivement, j'avais mal lu, je pensais que le fichier A pouvait contenir plusieurs lignes différentes.
0
zipe31 Messages postés 38797 Statut Contributeur 6 433
 
En fait non, tu n'as pas mal lu, c'est l'énoncé qui est légèrement inversé ;-)
0
dubcek Messages postés 19021 Statut Contributeur 5 637
 
hello
avec awk
$ awk 'FNR==NR{a=$0; next} {print substr(a,1,3) $0 substr(a,4)}' A B 
ABCADEF
ABCBDEF
ABCCDEF
$ 
1
gnugo
 
Salut,
je ne comprends pas trop, pourquoi tu fais une 2eme boucle imbriquée dans la première ?
$
0
gnugo
 
C'est vrai que c'est pas évident de lire 2 fichiers en même temps en bash, il y a sans doute une commande bien / un enchainement de commandes qui va bien pour le faire, mais que je ne connais pas

J'aurais fait quelque chose de ce genre :

#!/bin/bash

exec 5<A 6<B
position=3

while read -u 5 lineA
do
read -u 6 lineB
echo ${lineA:0:$position}$lineB${lineA:$position}

done

                
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nicdu40 Messages postés 27 Statut Membre 1
 
Merci !!!! j'ai utilisé la methode sed ... encore un grand merci , et quelle rapidité!
0