Je suis sur le point d'apprendre quelques scripts shell et j'ai vraiment du mal à obtenir ce que je veux avec les résultats de frgep. Est-il possible de rediriger les résultats de fgrep vers des fichiers afin que chaque motif soit sauvegardé dans des fichiers contenant uniquement les lignes appartenant à ces patterns.fgrep: Tri des résultats dans les fichiers
Mon fichier d'entrée ressemble à:
@ABC;123;bc=Pattern_1;
@DEF;456;bc=Pattern_1;
@ZYR;678;bc=Pattern_2;
@OPZ;888;bc=Pattern_2;
Mon dossier J'utilise pour la recherche de modèle ressemble:
Pattern.txt:
Pattern_1
Pattern_2
Pattern_3
Maintenant, je fais fgrep (je dois aussi les 3 lignes suivantes de chaque entrée):
fgrep -A 3 -f Pattern.txt huge_file
Cela fonctionne parfaitement. Mais je veux que les résultats soient triés dans les fichiers. Ce qui signifie que chaque ligne qui contient Pattern_1 doit être dans un fichier de résultats, par ex. Pattern_1.txt. Les autres motifs de la même manière (les lignes pattern_2 devraient se retrouver dans pattern_2.txt et ainsi de suite).
Pattern_1.txt:
ABC Pattern_1 123
DEF Pattern_1 456
...
Pattern_2.txt:
ZYR Pattern_2 678
OPZ Pattern_2 888
...
En principe, je pourrais une boucle pour chaque modèle et faire un fgrep chaque fois et enregistrer les résultats dans les fichiers. Mais y a-t-il une façon plus élégante de canaliser les résultats du fgrep à la volée dans de nombreux fichiers en fonction du motif. Cela est d'autant plus important que le fichier contenant le pattern est énorme et qu'il faut du temps pour lancer fgrep. Est-ce possible? J'ai joué avec des clauses if après piping mais je ne suis pas capable d'obtenir la bonne syntaxe pour faire ce que je veux faire. Est-ce possible?
Merci. Carsten
Pouvez-vous donner un exemple du fichier que vous cherchez dans? –
Merci beaucoup! J'ai mis à jour la question. Le format d'entrée n'est pas tabulé mais séparé par des tabulations et au début de chaque ligne il y a un @. – user2251977