2009-08-25 6 views

Répondre

15

man grep mentionne que

-m NUM, --max-count=NUM 
      Stop reading a file after NUM matching lines. If the input is 
      standard input from a regular file, and NUM matching lines are 
      output, grep ensures that the standard input is positioned to 
      just after the last matching line before exiting, regardless of 
      the presence of trailing context lines. This enables a calling 
      process to resume a search. 

si on peut utiliser

grep model old_file_name.txt -m 5 > new_file_name.txt 

Pas besoin d'un tuyau. grep supporte presque tout ce dont vous avez besoin.

+0

Merci! Je ne connaissais pas '-m'. – seth

2

grep "modèle" nom de fichier | tête n5> newfile

7
grep model [file] | head -n 5 > [newfile] 
-1
cat file | grep model | head -n 5 > outfile.txt 
+5

C'est horrible, l'utilisation de 'cat' chargera tout le fichier en mémoire avant d'exécuter' grep'. Appelez simplement 'grep' avec un paramètre de fichier. –

+1

Les autres réponses sont meilleures, mais le commentaire ci-dessus n'est pas vrai. Le shell va démarrer les 3 commandes sans attendre d'abord la sortie. – mark4o

+1

Sur Windows, les canaux sont disponibles sur la ligne de commande, mais l'accord est que le premier programme est exécuté et écrit dans un fichier. Ensuite, le programme suivant est exécuté sur ces résultats. Ce n'est pas comme ça que fonctionne Linux/Unix. Unix n'est pas ce cerveau endommagé. Et aucun des deux ne lit le fichier entier en mémoire d'abord. D'où tiens-tu cette idée? – xcramps

Questions connexes