[linux/shell] inserrer texte en début ligne
Résolu/Fermé
mortelrdv
-
22 févr. 2009 à 08:54
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 25 févr. 2009 à 11:43
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 25 févr. 2009 à 11:43
A voir également:
- [linux/shell] inserrer texte en début ligne
- Partager photos en ligne - Guide
- Site de vente en ligne particulier - Guide
- Transcription audio en texte word gratuit - Guide
- Aller à la ligne excel - Guide
- Excel cellule couleur si condition texte - Guide
8 réponses
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
22 févr. 2009 à 09:48
22 févr. 2009 à 09:48
hello
sed 's/^/VCC;/' < fichier_in > fichier_out
sed 's/^/VCC;/' < fichier_in > fichier_out
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
22 févr. 2009 à 10:33
22 févr. 2009 à 10:33
Salut,
L'algo est aussi important et il joue sur le temps d'exécution.
Ton cas
Tu lis chaque ligne et tu la stockes
Tu concatenes VCC avec le contenu de la variable
Tu fait la redirection >> vers le nouveau fichier
La solution de dubcek
Il mets au début de chaque ligne VCC
Le résultat il le mets dans le fichier de sortie
Un fichier de 70000 ligne ce n'est rien ;-))
Voici un test de temps pour un fichier d'un 1 000 000 lignes
L'algo est aussi important et il joue sur le temps d'exécution.
Ton cas
Tu lis chaque ligne et tu la stockes
Tu concatenes VCC avec le contenu de la variable
Tu fait la redirection >> vers le nouveau fichier
La solution de dubcek
Il mets au début de chaque ligne VCC
Le résultat il le mets dans le fichier de sortie
Un fichier de 70000 ligne ce n'est rien ;-))
Voici un test de temps pour un fichier d'un 1 000 000 lignes
lami20j@debian:~/sda7$ cat /proc/cpuinfo|tail -30|head -8 clflush size : 64 power management: processor : 1 vendor_id : GenuineIntel cpu family : 6 model : 15 model name : Intel(R) Core(TM)2 Duo CPU T5450 @ 1.66GHz lami20j@debian:~/sda7$ du -sh mortelrdv 112M mortelrdv lami20j@debian:~/sda7$ wc -l mortelrdv 1000000 mortelrdv lami20j@debian:~/sda7$ time while read line;do echo "VCC;"$line >> mortelrdv.OUT; done < mortelrdv real 0m58.677s user 0m44.995s sys 0m13.681s lami20j@debian:~/sda7$ time sed 's/^/VCC;/' <mortelrdv>mortelrdv.OUT2 real 0m1.624s user 0m1.108s sys 0m0.464s
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
22 févr. 2009 à 10:45
22 févr. 2009 à 10:45
et si c'est une machine SunOS et pas Solaris, elle doit être plutôt ancienne
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
22 févr. 2009 à 10:57
22 févr. 2009 à 10:57
Salut,
Je compare avec ça ça prend environ 3mn chez moi, core2duo 6600,.
Je compare avec ça ça prend environ 3mn chez moi, core2duo 6600,.
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
22 févr. 2009 à 11:49
22 févr. 2009 à 11:49
et comparer sed et awk , que dit
time awk '{printf("VCC;%s\n", $0)}' < fichier_in > fichier_out
time awk '{printf("VCC;%s\n", $0)}' < fichier_in > fichier_out
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
22 févr. 2009 à 12:08
22 févr. 2009 à 12:08
Re,
lami20j@debian:~/sda7$ time awk '{printf("VCC;%s\n", $0)}' <mortelrdv>mortelrdv.OUT3 real 0m1.630s user 0m0.808s sys 0m0.548s
Merci pour vos suggestion.
Je vais passer par awk car je voudrais ajouter quelques operations.
PS : Maintenant que j'y pense, dans le script qui a duré 1h sur un sunOs, je me demande s'il l'accès disque n'y serait pas pour quelque chose car je fais quelque chose comme 70000x(ecriture puis effacement, d'un petit fichier de 2ko)
Je vais passer par awk car je voudrais ajouter quelques operations.
PS : Maintenant que j'y pense, dans le script qui a duré 1h sur un sunOs, je me demande s'il l'accès disque n'y serait pas pour quelque chose car je fais quelque chose comme 70000x(ecriture puis effacement, d'un petit fichier de 2ko)
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 621
25 févr. 2009 à 08:55
25 févr. 2009 à 08:55
certainement, cette opération, c'est beaucoup d'I/O et peu de cpu
mais sed et awk lisent le fichier d'un coup alors que la boucle while read traite ligne après ligne et en shell
mais sed et awk lisent le fichier d'un coup alors que la boucle while read traite ligne après ligne et en shell
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
25 févr. 2009 à 11:43
25 févr. 2009 à 11:43
Salut,
As-tu essayé en C?!
As-tu essayé en C?!