grep -f sur les fichiers dans un dossier zippé
J'ai un problème, je suis en espérant que quelqu'un sera en mesure de vous aider avec...
Je suis d'effectuer un appel récursif à fgrep/grep -f recherche sur une zippée dossier à l'aide de la commande suivante dans un de mes programmes:
La commande, je suis en utilisant
grep -r -i -z -I -f /path/to/pattern/file /home/folder/TestZipFolder.zip
À l'intérieur de la structure de fichier est la chaîne de caractères "Chien" que je suis en train de rechercher.
Dans la zippé jusqu'dossier il y a un certain nombre de fichiers de texte contenant la chaîne de caractères "Chien".
La commande grep -f de la commande avec succès trouve les fichiers de texte contenant la chaîne de caractères "Chien" dans 3 fichiers à l'intérieur de la fermeture éclair vers le haut dossier, mais elle imprime la sortie sur une seule ligne et des personnages étranges apparaissent à la fin je.e PK (comme illustré ci-dessous). Et quand j'essaie de l'impression à la sortie vers un fichier dans mon programme, d'autres personnages apparaissent à la fin comme ^B^T^@
De sortie de la commande grep-f de la commande:
TestZipFolder/test.txtThis is a file containing the string DogPKtest1.txtDog, is found again in this file.PKTestZipFolder/another.txtDog is written in this file.PK
Comment aurais-je obtenir chacun des fichiers contenant la chaîne "Chien" n'a été trouvé pour imprimer sur une nouvelle ligne de sorte qu'ils ne sont pas tous regroupés sur une seule ligne comme ils sont maintenant?
Aussi où sont les "PK" et autres personnages étranges apparaissant dans la sortie, et comment faire pour les empêcher d'apparaître?
De sortie désiré
TestZipFolder/test.txt:This is a file containing the string Dog
TestZipFolder/test1.txt:Dog, is found again in this file
TestZipFolder/another.txt:Dog is written in this file
Quelque chose le long de ces lignes, en vertu de laquelle l'utilisateur est en mesure de voir où la chaîne de caractères peut être trouvé dans le fichier (que vous obtenez en fait la sortie dans ce format si vous exécutez la commande grep sur un fichier qui n'est pas un fichier zip).
de votre aide c'est très apprécié, merci
OriginalL'auteur perl-user | 2013-08-02
Vous devez vous connecter pour publier un commentaire.
Si vous avez besoin d'une multiligne de sortie, une meilleure utilisation zipgrep :
la -s est de supprimer les messages d'erreur(en option). Cette commande permet d'imprimer tous appariés lignes avec le nom de fichier. Si vous souhaitez supprimer les doublons de noms, lorsque plus d'un match dans un fichier, un autre traitement doit être effectué à l'aide de boucles/grep ou awk ou sed.
En fait, zipgrep est une combinaison egrep et décompresser. Et son utilisation est la suivante :
de sorte que vous pouvez passer n'importe quel egrep options.
pouvez-vous fournir le résultat souhaité? Si vous le faites, je peux donner un essai.
Mise à jour de ma question de montrer le résultat souhaité. C'est le même format de sortie est si vous exécutez la commande grep sur un dossier qui n'est pas un fichier zip (j'.e il donne le nom du fichier que le match a été trouvé dans puis après le côlon montre où il est) merci beaucoup
Enfin arrivés à savoir la sortie désirée(compris). La mise à jour de la réponse...
OriginalL'auteur blackSmith