
Envoyé par
N_BaH
Merci pour ce petit tuto, ca va me servir pour la suite 

Envoyé par
zipe31
Salut,
Ça me parait un peu lourd comme code
Une solution avec "sed" (par contre je n'ai pas pris en compte le fait que 2 lignes qui se suivent n'ont pas de correspondance sur le 1er champ).
Résultat sur la sortie standard (écran) :
1 2 3 4 5 6 7 8 9
| $ cat brol
20062012;0810
20062012;1812
21062012;0836
21062012;2035
$ sed -rn 'N;s/([^;]*;)(.*)\n(\1)(.*)/\1\2;\4/p' brol
20062012;0810;1812
21062012;0836;2035 |
Résultat dans un fichier :
1 2 3 4 5 6 7
| $ sed -rn 'N;s/([^;]*;)(.*)\n(\1)(.*)/\1\2;\4/w fich' brol
$ cat fich
20062012;0810;1812
21062012;0836;2035
$ |

Je connais pas vraiment "sed" je vais me documenter un peu sur la chose, mais à ce que tu me dit,
sed -rn 'N;s/([^;]*;)(.*)\n(\1)(.*)/\1\2;\4/p' brol
ne s'applique qu'au fichier qui contient 4 lignes?
Pour faire simple, je travaille en horaire décaler, mon profil et celui de mes collègues (total 3 personnes) est unique dans la société, la badgeuse ne peut connaitre notre planning car il est different chaque semaine, on est donc obliger de calculer nos horaire nous meme. On est parvenu à extraire du logiciel de badge un fichier csv qui contient la date et l'heure du pointage.
Pour un journée, on a donc 2 lignes (debut et fin) si je traite mes pointages correctement tous les mois, le fichier contiendra environ 60 lignes par mois, mais si j'oublie de le faire, comme ces derniers temps, il peut contenir jusqu'à 360 lignes... et oui 5mois de retard ca fait beaucoup...
Partager