Sed : insertion lettre a chaque ligne
Résolu
nicdu40
Messages postés
27
Statut
Membre
-
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
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
A voir également:
- Sed : insertion lettre a chaque ligne
- Remplacez le mot sed par le mot mais dans tout le texte. combien de caractères contient le document suite à cette modification (en incluant les espaces) ? - Guide
- Sed crlf - Astuces et Solutions
- Sed et ses caprices (ou les miens) ✓ - Forum Linux / Unix
- Sed - Remplacement texte par retour à la ligne ? ✓ - Forum Linux / Unix
- Sed supprimer ligne vide - Forum Linux / Unix
5 réponses
Salut,
$ cat A
ABCDEF
$ cat B
A
B
C
$ A=$(<A)
$ sed 's/.*/'"${A:0:3}"'&'"${A:3}"'/' B
ABCADEF
ABCBDEF
ABCCDEF
$
gnugo
Effectivement, j'avais mal lu, je pensais que le fichier A pouvait contenir plusieurs lignes différentes.
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é ;-)
hello
avec awk
avec awk
$ awk 'FNR==NR{a=$0; next} {print substr(a,1,3) $0 substr(a,4)}' A B
ABCADEF
ABCBDEF
ABCCDEF
$
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question