scratch/content/html/fr/blog/2010-02-18-split-a-file-by-keyword.md

51 lines
1.1 KiB
Markdown
Raw Normal View History

2010-04-29 14:59:14 +00:00
-----
isHidden: false
menupriority: 1
kind: article
created_at: 2010-02-18T15:29:14+02:00
2010-04-26 14:48:52 +00:00
title: découper un fichier par mots clés
2010-05-09 12:53:46 +00:00
author_name: Yann Esposito
author_uri: yannesposito.com
tags:
- awk
- shell
- script
-----
2010-04-26 14:48:52 +00:00
Assez bizarrement, je n'ai trouvé aucun outil UNIX pour découper un fichier par mot clé.
Alors j'en ai fait un en `awk`. Je le met ici principalement pour moi, mais ça peut toujours servir à quelqu'un d'autre.
Le code suivant découpe un fichier pour chacune de ses ligne contenant le mot `UTC`.
2010-04-15 09:45:50 +00:00
<div><code class="perl">
#!/usr/bin/env awk
BEGIN{i=0;}
/UTC/ {
i+=1;
FIC=sprintf("fic.%03d",i);
}
{print $0>>FIC}
2010-04-15 09:45:50 +00:00
</code></div>
2010-04-26 14:48:52 +00:00
En réalité, j'avais besoin de cet outils pour avoir un fichier par jour. Chaque ligne contenant UTC ayant le format suivant :
<pre class="twilight">
Mon Dec 7 10:32:30 UTC 2009
</pre>
2010-04-26 14:48:52 +00:00
J'en suis finallement arrivé au code suivant :
2010-04-15 09:45:50 +00:00
<div><code class="perl">
#!/usr/bin/env awk
BEGIN{i=0;}
/UTC/ {
date=$1$2$3;
if ( date != olddate ) {
olddate=date;
i+=1;
FIC=sprintf("fic.%03d",i);
}
}
{print $0>>FIC}
2010-04-15 09:45:50 +00:00
</code></div>