A voir également:
- Sed ajouter un mot en fin de ligne
- Sed ajouter en fin de ligne - Meilleures réponses
- Sed fin de ligne - Meilleures réponses
- Ajouter une mot en fin de ligne ✓ - Forum - Linux / Unix
- Lier des mots en fin de ligne ✓ - Forum - Word
- Notepad++ ajouter un caractère en fin de ligne ✓ - Forum - Shell
- Insérer un élément en début de chaque ligne ✓ - Forum - Logiciels
- Sed ajout d'un caractère en fin de ligne ✓ - Forum - Linux / Unix
8 réponses
bennylane
- Messages postés
- 6
- Date d'inscription
- mardi 12 août 2008
- Statut
- Membre
- Dernière intervention
- 12 août 2008
Merci beaucoup à tous pour votre aide.
Une ligne de code pour ce traitement c'est très optimal.
:-)
Une ligne de code pour ce traitement c'est très optimal.
:-)
bennylane
- Messages postés
- 6
- Date d'inscription
- mardi 12 août 2008
- Statut
- Membre
- Dernière intervention
- 12 août 2008
Dans mon cas ce n'est pas nécessaire de connaître la ligne la plus longue, car la longueur maximale est déterminée à l'avance et elle est fixe.
Merci
:-)
Merci
:-)
jipicy
- Messages postés
- 40805
- Date d'inscription
- jeudi 28 août 2003
- Statut
- Modérateur
- Dernière intervention
- 10 août 2020
Salut,
Tu t'embêtes pour rien :
Tu t'embêtes pour rien :
$ cat fichier.txt LEC000315L 180874 KLC0171816G_1 10 LAB69020 178968 LAB69020_1 10 LAB69079 179970 LAB69079_1 12 LAB69212 179971 LAB69212_1 24 NOVN32928N 176794 ZNOVN32928_1 98 $ sed 's/.*/& FIN/' fichier.txt LEC000315L 180874 KLC0171816G_1 10 FIN LAB69020 178968 LAB69020_1 10 FIN LAB69079 179970 LAB69079_1 12 FIN LAB69212 179971 LAB69212_1 24 FIN NOVN32928N 176794 ZNOVN32928_1 98 FIN $;-))
bennylane
- Messages postés
- 6
- Date d'inscription
- mardi 12 août 2008
- Statut
- Membre
- Dernière intervention
- 12 août 2008
Salut,
Merci pour ta réponse!
Chaque ligne est de longueur différente et le mot FIN doit toujours être à la même position à la fin de la ligne. genre à la colonne 35.
Est-ce que ton code peux s'adapter à ce besoin?
Merci!
Merci pour ta réponse!
Chaque ligne est de longueur différente et le mot FIN doit toujours être à la même position à la fin de la ligne. genre à la colonne 35.
Est-ce que ton code peux s'adapter à ce besoin?
Merci!
simo
la commande sed permet de positionner le mot 'FIN' à la fin de toutes les lignes de ton fichier.
dubcek
- Messages postés
- 18240
- Date d'inscription
- lundi 15 janvier 2007
- Statut
- Contributeur
- Dernière intervention
- 30 novembre 2020
A la colonne 35 exactement:
awk '{printf("%-33s FIN\n", $0)}' < fichier.txt
awk '{printf("%-33s FIN\n", $0)}' < fichier.txt
jipicy
- Messages postés
- 40805
- Date d'inscription
- jeudi 28 août 2003
- Statut
- Modérateur
- Dernière intervention
- 10 août 2020
C'est moins joli avec "sed" qu'avec "awk" mais bon, si ça peut servir :
$ cat fichier.txt LEC000315L 180874 KLC0171816G_1 10 LAB69020 178968 LAB69020_1 10 LAB69079 179970 LAB69079_1 12 LAB69212 179971 LAB69212_1 24 NOVN32928N 176794 ZNOVN32928_1 98 $ sed ':z;s/^.\{,33\}$/& /;t z; s/.*/&FIN/' fichier.txt LEC000315L 180874 KLC0171816G_1 10FIN LAB69020 178968 LAB69020_1 10 FIN LAB69079 179970 LAB69079_1 12 FIN LAB69212 179971 LAB69212_1 24 FIN NOVN32928N 176794 ZNOVN32928_1 98 FIN $;-))
lami20j
- Messages postés
- 21331
- Date d'inscription
- jeudi 4 novembre 2004
- Statut
- Modérateur, Contributeur sécurité
- Dernière intervention
- 30 octobre 2019
Salut,
une solution vraiment optimale sera de calculer la longueur de la ligne la plus grande, et l'utiliser pour positionner le mot FIN
Voilà ce qui donne si le nombre des champs n'est pas bien choisi
une solution vraiment optimale sera de calculer la longueur de la ligne la plus grande, et l'utiliser pour positionner le mot FIN
Voilà ce qui donne si le nombre des champs n'est pas bien choisi
lami20j@debian:~$ cat req LEC000315L 180874 KLC0171816G_1 10 LAB69020 178968 LAB69020_1 10 LAB69079 179970 LAB69079_1 12 LAB69212 179971 LAB69212_1 24 NOVN32928N 176794 ZNOVN32928_1 98 lami20j@debian:~$ awk '{printf("%-33s FIN\n", $0)}' < req LEC000315L 180874 KLC0171816G_1 10 FIN LAB69020 178968 LAB69020_1 10 FIN LAB69079 179970 LAB69079_1 12 FIN LAB69212 179971 LAB69212_1 24 FIN NOVN32928N 176794 ZNOVN32928_1 98 FIN lami20j@debian:~$ awk '{printf("%-33s FIN\n", $0)}' < req | perl -ne 'print length $1,"\n" if /^(.+)FIN/' 35 34 34 34 35 lami20j@debian:~$ awk '{printf("%-40s FIN\n", $0)}' < req | perl -ne 'print length $1,"\n" if /^(.+)FIN/' 41 41 41 41 41Si j'augmente le nombre de champs alors tout va bien ;-)