Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2355 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs

  extraire des lignes d'un fichier de log

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

extraire des lignes d'un fichier de log

n°354999
warp
Posté le 12-11-2003 à 11:34:27  profilanswer
 

Bonjour,
 
j'ai un fichier de log de rsync.
Il faut que je récupère les noms de fichiers transférés.
 
Pour ce faire, je dois prendre, entre 2 lignes,
les noms de fichiers ne se terminant pas par un '/'
.......mais je n'y arrive pas.
Pourtant je pense que ce n'est pas trop compliqué.
 
A une certaine ligne (pas forcément fixe) commence un liste de répertoires et de noms de fichiers.
Cette liste se termine à une ligne qui est aussi inconnue(dépend du nombre de fichiers).
 
Ex:

Code :
  1. Wed Nov 12 00:00:00 CET 2003
  2. PING intranet (192.168.50.108) from 192.168.100.150 : 1(29) bytes of data.
  3. 9 bytes from intranet (192.168.50.108): icmp_seq=1 ttl=63
  4. --- intranet ping statistics ---
  5. 1 packets transmitted, 1 received, 0% loss, time 0ms
  6. building file list ... done
  7. deleting 01_Nomenclatures/V520489097_ArconST_Subrack_2448_120_3000_wiNema/nomenclature_V520489097.htm
  8. deleting 01_Nomenclatures/V520489096_ArconST_Subrack_48_120_300_wiNema/nomenclature_V520489096.htm
  9. deleting 01_Nomenclatures/V511102254_ArconSTI_1250_110_230/nomenclature_V511102254.htm
  10. deleting 01_Nomenclatures/V510489111_SUBRACK_HDS_50A-120V_2U/nomenclature_V510489111.htm
  11. deleting 01_Nomenclatures/V510489110_SUBRACK_HDS_30A-230V_1U/nomenclature_V510489110.htm
  12. .......
  13. ./
  14. 01_Nomenclatures/
  15. 01_Nomenclatures/2399049523_ArconST300230_SubRack/Test_UL.xls
  16. 01_Nomenclatures/3620000000_GROUP_COMPONENT_STI_RDI_1_48/
  17. 01_Nomenclatures/3620000001_GROUP_COMPONENT_RDI_3_48/
  18. 01_Nomenclatures/3620000002_MainBoard_STI_300_48_TCG/archive_res510k.doc
  19. .....
  20. rsync[11057] (sender) heap statistics:
  21.   arena:         311704   (bytes from sbrk)
  22.   ordblks:           10   (chunks not in use)
  23.   smblks:             0
  24.   hblks:              0   (chunks from mmap)
  25.   hblkhd:             0   (bytes from mmap)
  26.   usmblks:            0 
  27.   fsmblks:            0
  28.   uordblks:      286952   (bytes used)
  29.   fordblks:       24752   (bytes free)
  30.   keepcost:        9632   (bytes in releasable chunk)
  31. Number of files: 1911
  32. Number of files transferred: 0
  33. Total file size: 297544312 bytes
  34. Total transferred file size: 0 bytes
  35. Literal data: 0 bytes
  36. Matched data: 0 bytes
  37. File list size: 71980
  38. Total bytes written: 71996
  39. Total bytes read: 20


 
En l'occurence je veux récupérer :

Code :
  1. 01_Nomenclatures/2399049523_ArconST300230_SubRack/Test_UL.xls
  2. 01_Nomenclatures/3620000002_MainBoard_STI_300_48_TCG/archive_res510k.doc


 
J'aimerais faire ceci avec un script shell, pour la facilité de mise à jour.


---------------
Il n'est pas nécéssaire de réussir pour persévérer.
mood
Publicité
Posté le 12-11-2003 à 11:34:27  profilanswer
 

n°355002
philou_a7
\_o< coin ! >o_/
Posté le 12-11-2003 à 11:40:09  profilanswer
 

tu saurais delimiter la zone ou les fichiers se trouvent ?
 
est ce qu'il y a un motif qui peut apparaitre pour dire "là je vais avoir mes fichiers" et "là y en a plus" (il y a des "....." dans ton exemple, sont ils toujours là ?)

n°355004
warp
Posté le 12-11-2003 à 11:44:14  profilanswer
 

En fait les fichiers apparaissent systématiquement après :

Code :
  1. building file list ... done


et se terminent avec:

Code :
  1. rsync[11057] (sender) heap statistics:


 
Mais dans cette liste, il y a des noms de fichiers effacés
(qui commentcent par : deleting)
et des noms de répertoires (qui se terminent par '/')
.......je ne veux pas ces 2-ci, seulement les fichiers mis à jour.
 
J'essaye avec awk, grep ......... mais pas moyen.


---------------
Il n'est pas nécéssaire de réussir pour persévérer.
n°355006
warp
Posté le 12-11-2003 à 11:46:04  profilanswer
 

En gros, si j'arrive à lister les lignes comprises entre les 2 délimiteurs, je devrais m'en sortir avec grep,
mais je n'arrive pas à fournir la liste de ces lignes à grep.


---------------
Il n'est pas nécéssaire de réussir pour persévérer.
n°355007
void_ppc
Posté le 12-11-2003 à 11:46:12  profilanswer
 

T'as essayé de faire quelque chose avec --log-format=FORMAT ?
 

Citation :

This allows you to specify exactly what the rsync client logs to
              stdout on a per-file basis. The log format  is  specified  using
              the  same  format  conventions  as  the  log  format  option  in
              rsyncd.conf


 
 
Voilà le sus-dit format :
 

Citation :

log format
              The  "log  format"  option allows you to specify the format used
              for logging file transfers when transfer logging is enabled. The
              format  is  a  text  string containing embedded single character
              escape sequences prefixed with a percent (%) character.
 
              The prefixes that are understood are:
 
       o      %h for the remote host name
 
       o      %a for the remote IP address
 
       o      %l for the length of the file in bytes
 
       o      %p for the process id of this rsync session
 
       o      %o for the operation, which is either "send" or "recv"
 
       o      %f for the filename
 
       o      %P for the module path
 
       o      %m for the module name
 
       o      %t for the current date time
 
       o      %u for the authenticated username (or the null string)
 
       o      %b for the number of bytes actually transferred
 
       o      %c when sending files this gives the number  of  checksum  bytes
              received for this file
 
              The  default log format is "%o %h [%a] %m (%u) %f %l", and a "%t
              [%p] " is always added to the  beginning  when  using  the  "log
              file" option.
 
              A  perl  script  called  rsyncstats  to summarize this format is
              included in the rsync source code distribution.


Message édité par void_ppc le 12-11-2003 à 11:49:40
n°355011
warp
Posté le 12-11-2003 à 11:48:54  profilanswer
 

.......je vais regarder ça


---------------
Il n'est pas nécéssaire de réussir pour persévérer.
n°355024
arsunik
ma tuxitude me beastifie
Posté le 12-11-2003 à 11:56:59  profilanswer
 

Code :
  1. perl -ne '$p=0 if (/^rsync\[/);print if ($p==1 && !/^deleting/ && !/\/$/); $p=1 if (/building file list ... done/);' toto.log


n°355033
warp
Posté le 12-11-2003 à 12:03:28  profilanswer
 

hum...........parfait !
j'aurais voulu le faire en script shell,
mais je crois que je vais garder ça


---------------
Il n'est pas nécéssaire de réussir pour persévérer.
n°355168
philou_a7
\_o< coin ! >o_/
Posté le 12-11-2003 à 14:54:18  profilanswer
 

ca peut aussi se faire avec awk ;) c'est a ca que je pensais
 
dans le principe, tu poses un flag quand tu rencontres la ligne "building file list ... done", et si ce flag est validé, tu ne garde que les lignes qui ne commencent pas par delete et ne finissent pas par / ;)
 

Code :
  1. gawk 'BEGIN {files = 0}
  2. /^building file.*/ {files = 1}
  3. /.*heap statistics.*/ {files = 0}
  4. ! ( /deleting .*/ || /.*\\$/ ) { if files==1 then { print $0 } }'


 
bon, le code doit etre foireux, c'est faitr de tete, mais ca doit pouvoir se faire comme ça ;)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs

  extraire des lignes d'un fichier de log

 

Sujets relatifs
les fichier cache sous linux on les voit comment?modification fantome de l'encodage sur un fichier !!!
[Proftpd] Faire un lien symbolique vers un fichier...Partager 2 lignes adsl (iptable), agrégation de canaux ip
fichier bz2 corrompuAntivirus pour serveur de fichier?
terminal Eterm de Enlightenment : signification du * après un fichiercréér un fichier de Log en Append (>>) mais en 1ere ligne du fichier ?
[newb] impossibilité de lire des fichier audiovideo sous mandrake 9.2.partage de fichier swat & webmin qui font pas ce que je veux
Plus de sujets relatifs à : extraire des lignes d'un fichier de log


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR