2013-08-15 2 views
1

J'ai un grand nombre de fichiers texte contenant des données horodatées pour un jour. Chaque fichier est un jour. Je veux extraire une seule ligne de chaque fichier à la même heure. Les travaux suivants, mais est assez lent - y at-il un moyen plus rapide?bash Comment extraire la première correspondance de n fichiers efficacement

for f in nGENERIC*.txt ;do egrep -m1 "*T1600*" $f ; done > a 
+2

Vous pouvez également utiliser 'fgrep' pour cette , si vous êtes seulement intéressé par une chaîne fixe, et non une expression régulière. – rid

Répondre

2

Juste grep devrait faire ...

grep -m1 "T1600" nGENERIC*.txt > output 
+0

Je pensais dans les mêmes termes mais comment est-ce plus rapide? – svante

+0

Rappelez-vous le drapeau "-m1" Je veux la première instance de T1600 de chaque fichier. Donc je ne pense pas que cette solution fonctionne – ManInMoon

+0

@svante Vous bouclez les fichiers en utilisant la boucle 'for' ... – iamauser

0

Avez-vous essayé la tête?

for f in nGENERIC*.txt ;do head -n1 $f ; done > a 
+0

ah, mal lu la question – Konstantin

1

Puisque vous n'êtes pas vraiment en utilisant une expression régulière, vous serez mieux à l'aide -F interrupteur pour éviter le traitement des expressions régulières et de le rendre un peu plus efficace:

grep -F -m1 "T1600" nGENERIC*.txt > a 
Questions connexes