2010-04-29 14:59:14 +00:00
|
|
|
-----
|
2010-03-12 13:30:42 +00:00
|
|
|
isHidden: false
|
|
|
|
menupriority: 1
|
|
|
|
kind: article
|
2010-03-30 14:39:12 +00:00
|
|
|
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
|
2010-03-12 13:30:42 +00:00
|
|
|
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-03-12 13:30:42 +00:00
|
|
|
|
2010-04-15 09:45:50 +00:00
|
|
|
<div><code class="perl">
|
2010-03-12 13:30:42 +00:00
|
|
|
#!/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-03-12 13:30:42 +00:00
|
|
|
|
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 :
|
2010-03-12 13:30:42 +00:00
|
|
|
|
|
|
|
<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-03-12 13:30:42 +00:00
|
|
|
|
2010-04-15 09:45:50 +00:00
|
|
|
<div><code class="perl">
|
2010-03-12 13:30:42 +00:00
|
|
|
#!/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>
|