Lire un fichier text et extraire les caracteres 25 a 37 de chaque lign

Lire un fichier text et extraire les caracteres 25 a 37 de chaque lign - Shell/Batch - Programmation

Marsh Posté le 11-06-2011 à 16:03:46    

Salut
 
Je suis en train de programmer un script shell. Voila plusieurs jours que j'essaye de trouver une commande pour lire les lignes du fichier archive.txt contenant la taille des fichiers d'une archive, extraire le 3eme champ de chaque ligne (pas de header dans le fichier), pour ensuite pouvoir utiliser la valeur extraite dans un test.  
 
Le but final etant de verifier que les fichiers archives ont la meme taille que les fichiers sur le disque.
 
archive.txt (contenant 4 lignes)
 
-rw-rw-r-- spomega2/da26 15689762292 2011-05-31 11:31:28 Fichier_1
-rw-rw-r-- spomega2/da26       31362 2011-05-31 11:31:28 Fichier_2
-rw-rw-r-- spomega2/da26 15689762292 2011-05-31 11:31:28 Fichier_3
-rw-rw-r-- spomega2/da26       31362 2011-05-31 11:31:28 P110_01_Fichier_4
 
J'ai essaye de le faire avec la commande cut
 
cut -f3 archive.txt
 
mais elle me restitue le fichier entier
 
cut -c25,36  archive.txt
me restitue maximum deux caracteres par ligne
 
Je vois bien que je pourrais le faire avec awk mais je ne vois pas quelle syntaxe adopter.
 
Merci de votre aide.
 
Mathieu

Reply

Marsh Posté le 11-06-2011 à 16:03:46   

Reply

Marsh Posté le 11-06-2011 à 18:41:22    

T'as essayé cut avec des délimiteur ? Sinon t'y vas a la bourin et tu vire ce que tu veux pas avec un sed ^^

Reply

Marsh Posté le 12-06-2011 à 12:21:47    

Ce serait pas plus simple de faire avec un md5sum ?
Sinon regarde cet exemple : http://www.commentcamarche.net/faq [...] ne#astuces

Reply

Marsh Posté le 15-06-2011 à 15:24:10    

En gros tu veux sauvegarder des fichiers qui ont évolués avec le temps ?
Si oui, la commande rsync qui te permet de synchroniser 2 répertoires, y compris entre deux serveurs différents.
Ou bien le find qui te permet de trouver les fichiers qui ont été modifiés dans les x derniers jours.
 
Il existe sinon la commande md5sum comme mentionnée (ou cksum qui a l'avantage de te donner en plus la taille du fichier), qui donne une signature unique à un fichier. si une copie du fichier a une signature différente, c'est que les fichiers sont différents.
 
Une autre possibilité, c'est le awk, comme évoqué plus haut. Dans ton cas :
 
awk '{print $3}' archive.txt

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed