Sed : insertion lettre a chaque ligne

Résolu
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

  1. Salut,
    je ne comprends pas trop, pourquoi tu fais une 2eme boucle imbriquée dans la première ?
    $
    1. 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
      1. Contributeur
        Salut,

        $ cat A
        ABCDEF
        
        $ cat B
        A
        B
        C
        
        $ A=$(<A)
        
        $ sed 's/.*/'"${A:0:3}"'&'"${A:3}"'/' B
        ABCADEF
        ABCBDEF
        ABCCDEF
        
        $
        1. Effectivement, j'avais mal lu, je pensais que le fichier A pouvait contenir plusieurs lignes différentes.
        2. Contributeur
          En fait non, tu n'as pas mal lu, c'est l'énoncé qui est légèrement inversé ;-)
      2. Contributeur
        hello
        avec awk
        $ awk 'FNR==NR{a=$0; next} {print substr(a,1,3) $0 substr(a,4)}' A B 
        ABCADEF
        ABCBDEF
        ABCCDEF
        $ 
        1. Merci !!!! j'ai utilisé la methode sed ... encore un grand merci , et quelle rapidité!