Go Back   Les systèmes UNIX et Linux Forums > Top Forums > De programmation et de script Shell
.
Google Site



De programmation et de script Shell Posez vos questions à propos de KSH, CSH, SH, BASH, PERL, PHP, SED, awk et d'autres scripts shell et les langages de script shell ici.

Closed Thread
English Japanese Spanish French German Portuguese Italian Powered by Powered by Google
 
Thread Tools Recherche sur ce Thread Rate Thread Modes d'affichage
  #1 (permalink)  
Old 03-13-2008
Registered User
 

Join Date: Mar 2008
Messages: 3
Fractionnement du fichier texte à plusieurs autres fichiers à l'aide de sed.

J'essaie de comprendre comment le faire efficacement avec aussi peu que possible le temps d'exécution et je suis sûr que l'aide sed est la meilleure façon. Cependant, je suis de nouveau à sed et tous les exemples de lecture et que j'ai trouvé ne semblent pas faire preuve d'un exercice similaire:

J'ai un long fichier texte (je l'ai appelé all_files.txt) liste tous les fichiers sur le système, chaque ligne indiquant la somme de contrôle, les autorisations, la date et le nom du fichier avec chemin. Par exemple:

683706D9 104775 Sep 27 12:00:04 1999 / bin / Audio
4C799E06 100775 novembre 14 17:33:11 1997 / bin / Blkfsys
C851669A 104775 octobre 04 14:08:38 1996 / bin/Dev16
CA4B42E7 100775 novembre 21 11:58:06 1996 / bin/Dev16.ansi
FF4396D0 100.775 octobre 04 14:06:03 1996 / bin/Dev16.par

Certains de ces fichiers sont classés en fonction de certains autres fichiers texte listant les fichiers appartenant à cette catégorie. Par exemple, le fichier catA.dat mai sont les suivantes:

/ bin/Dev16.par
/ bin / some_other_file
/ home / stuff / another_file

Listes semblables existent pour catB.dat et catC.dat.

Que faut-il faire est l'ensemble des lignes dans le fichier d'origine qui appartiennent à une certaine catégorie sera supprimée à partir de l'original et les copies de fichiers vers un nouveau fichier, disons catA_list et catB_list, etc Donc, à la fin seulement les fichiers non assignées à une catégorie sont laissés dans all_files.txt.

Existe-t-il un moyen facile de faire cela? J'ai compris comment utiliser sed à supprimer des lignes, mais à leur sortie de 3 différents fichiers en fonction de référence sur les matches à partir de fichiers texte est confus moi. Toutes les idées seront grandement appréciés!
Liens Sponsorisés
  #2 (permalink)  
Old 03-13-2008
fpmurphy's Avatar
Modérateur
 

Join Date: Dec 2003
Lieu: Florida
Posts: 2101
L'exemple suivant montre comment écrire les résultats
à 3 fichiers différents


Code:
#!/usr/bin/ksh

tmp=file.$$

cat <<EOT >$tmp
683706D9 104775 Sep 27 12:00:04 1999 /bin/Audio
4C799E06 100775 Nov 14 17:33:11 1997 /bin/Blkfsys
C851669A 104775 Oct 04 14:08:38 1996 /bin/Dev16
CA4B42E7 100775 Nov 21 11:58:06 1996 /bin/Dev16.ansi
FF4396D0 100775 Oct 04 14:06:03 1996 /bin/Dev16.par
EOT

sed -n -e '/^68/w ./out1' -e '/^C8/w ./out2' -e '/^CA/w ./out3' $tmp

rm $tmp
exit 0

  #3 (permalink)  
Old 03-13-2008
Registered User
 

Join Date: Mar 2008
Messages: 3
Merci! Cela permet, même si je suis ici voir d'autres complications. Pour l'un, je ne sais pas ce que je cherche depuis ce sera comme intrant dans d'autres fichiers (catA_list, catB_list, catC_list). Je pense d'abord que je pouvais utiliser une boucle pour lire chaque fichier de la catégorie des listes, en travaillant sur chaque catégorie à la fois:

tout lire AFILE
faire
sed -n-e '\ | "$ AFILE" $ | (
w / catA_list
d
) '<all_files.txt> Tmpfile
done <catA.dat


Cependant plus de 2 boucles devraient être utilisés pour la catégorie B et de catégorie C des fichiers. Essentiellement, ce serait une boucle à travers le fichier plusieurs fois. Je ne suis même pas sûr que cela fonctionne correctement. Je pense, il doit y avoir un moyen plus efficace de le faire.
  #4 (permalink)  
Old 03-14-2008
Registered User
 

Join Date: Mar 2008
Messages: 3
Ok, j'ai trouvé une solution qui fonctionne le plus souvent, mais je ne peux pas obtenir de travail en passant un argument dans la sed expression régulière. J'ai cette ligne d'extraction des fichiers d'un dans la catégorie A:

tout lire AFILE
faire
sed -e '\ |' "$ AFILE "'$|{
w / tmp / catA_list
d
) '</ Tmp / all_files> / tmp / non_AFiles

done <catA.dat


L'expression régulière fonctionne bien si je le remplacer par un nom de fichier spécifique. Mais en passant l'argument de la sorte, il ne trouvera que l'un des fichiers dans la liste des catalogues et pas les autres. Existe-t-il une meilleure façon de passer l'argument ici?

Aussi le nom de fichier inclut le chemin d'accès complet, par conséquent, pourquoi '/' n'est pas utilisé comme un délimiteur de l'expression.
Liens Sponsorisés
Closed Thread

Bookmarks

Thread Tools Recherche sur ce Thread
Recherche sur ce Thread:

Recherche avancée
Modes d'affichage Rate this thread
Rate this thread:

Règles de messages
Tu mai pas de nouvelles discussions: nonoui
Tu mai pas envoyer des réponses:
Tu mai pas envoyer des pièces jointes
Tu mai pas modifier vos messages

BB code est Sur
Smilies sont Sur
[IMG] code est Sur
Le code HTML est Hors tension
Trackbacks sont Sur
Pingbacks sont Sur
Refbacks sont Hors tension


Plus d'UNIX et Linux Forum Sujets Vous trouverez peut-être utile
Fil Thread Starter Forum Réponses Last Post
Fractionnement des fichiers en plusieurs fichiers par le biais de la commande AWK arund_01 De programmation et de script Shell 3 05-13-2008 10:17 AM
fractionnement de fichiers basé sur le texte dans le fichier matrix1067 De programmation et de script Shell 1 01-30-2006 08:45 PM
quelques colonnes de la fusion de deux fichiers texte dans un nouveau fichier kolvi De programmation et de script Shell 4 09-15-2005 05:34 AM
Fractionnement du gros fichier en plusieurs petits dncs De programmation et de script Shell 4 06-08-2005 12:02 PM
grep plusieurs fichiers texte dans le dossier en 1 fichier texte? Coppertone UNIX pour les nuls Questions et réponses 7 08-23-2002 03:50 PM



Toutes les heures sont au format GMT -4. Le temps est maintenant 03:39 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traductions Langue Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX et Linux Forums Copyright © 1993-2010. Tous droits Reserved.Ad Gestion par RedTyger

Content Relevant URLs par vBSEO 3.2.0