SED ajouter un nobre variable de caratères
Résolu
McFred
-
dubcek Messages postés 19021 Statut Contributeur -
dubcek Messages postés 19021 Statut Contributeur -
Bonjour,
Est il possible avec sed ou awk, voir les deux d'ajouter un nombre variable de caractères.
j'ai des lignes
ABCDEF
TOTO
TATA
mon fichier de sortie doit faire 40 caractères
donc je voudrai ajouter des . jusqu'à la fin
ABCDEF ajout de 34 points à la fin
6 points au début TOTO et 30 points à la fin
3 points TATA et 33 points
ABCDEF..................................
......TOTO..............................
...TATA.................................
Ha j'oubilais, je connais le nombre de point à mettre avant et après...
J'ai ça dans un variable Pt
Merci les dieux du sed et du awk !
Est il possible avec sed ou awk, voir les deux d'ajouter un nombre variable de caractères.
j'ai des lignes
ABCDEF
TOTO
TATA
mon fichier de sortie doit faire 40 caractères
donc je voudrai ajouter des . jusqu'à la fin
ABCDEF ajout de 34 points à la fin
6 points au début TOTO et 30 points à la fin
3 points TATA et 33 points
ABCDEF..................................
......TOTO..............................
...TATA.................................
Ha j'oubilais, je connais le nombre de point à mettre avant et après...
J'ai ça dans un variable Pt
Merci les dieux du sed et du awk !
A voir également:
- SED ajouter un nobre variable de caratères
- Ajouter un profil netflix payant - Accueil - Guide streaming
- Impossible d'ajouter un ami sur facebook - Guide
- Ajouter un compte whatsapp - Guide
- Ajouter un compte facebook - Guide
- Ajouter liste déroulante excel - Guide
4 réponses
hello
une possibilité, mais y a sûrement moyen de faire plus court
une possibilité, mais y a sûrement moyen de faire plus court
$ Pt="0 4 3"
$ awk -v pt="$Pt" 'BEGIN{split(pt, pt2)} {for(n=1;n<=40;)t[n++]="."; split($0, c, "."); for(n=1;n<=length();)t[pt2[NR]+n-1]=c[n++]; for(n=1; n<=40;)printf t[n++]; print ""}' fichier
ABCDEF..................................
....TOTO................................
...TATA.................................
$
Salut,
Rajouter des points avant et/ou après pour avoir 40 caractères c'est possible :
Par contre pour le reste il faudrait savoir quels sont les critères qui induisent le choix de tant de caractères avant et/ou après ???
Rajouter des points avant et/ou après pour avoir 40 caractères c'est possible :
$ cat bar
ABCDEF
TOTO
TATA
$ sed ':z;s/^.\{1,40\}$/&./;tz' bar
ABCDEF...................................
TOTO.....................................
TATA.....................................
Par contre pour le reste il faudrait savoir quels sont les critères qui induisent le choix de tant de caractères avant et/ou après ???
Le critère est que j'ai 3 variables.
La première Pt me donne le nombre de . qu'il faut avant
La deuxième Ch me donne le nombre de Caratères ( ABCDEF )
la Troisième PtEnd le nombre de . qu'il faut après ( calcul de 40 - Pt + Ch )
Le fichier est souvent avec des chiffres, et le but est qu'ils soient alignés pour faire une somme sous un framework pour des statistiques.
D'où des . avant et après.
En tous cas merci pour ton aide
La première Pt me donne le nombre de . qu'il faut avant
La deuxième Ch me donne le nombre de Caratères ( ABCDEF )
la Troisième PtEnd le nombre de . qu'il faut après ( calcul de 40 - Pt + Ch )
Le fichier est souvent avec des chiffres, et le but est qu'ils soient alignés pour faire une somme sous un framework pour des statistiques.
D'où des . avant et après.
En tous cas merci pour ton aide
$ Pt="0 4 3" $ awk -v pt="$Pt" 'BEGIN{split(pt, p2)} func p(x){while(x--)printf "."} {p(p2[NR]); printf $0; p(40-length()-p2[NR]); print ""}' fichier ABCDEF.................................. ....TOTO................................ ...TATA................................. $