Get the first n lines matching a specific pattern (with Linux commands)

I have a giant file where I want to find a term model. I want to transfer the first 5 lines containing the word model to another file. How to do this using Linux commands?

+3
source share
4 answers

man grep mentions that

 -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. 

therefore, you can use

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

No pipe needed. grep supports almost everything you need.

+15
source
grep model [file] | head -n 5 > [newfile]
+7
source

grep "model" filename | head -n 5 > newfile

+2
cat file | grep model | head -n 5 > outfile.txt
-1

Source: https://habr.com/ru/post/1716047/


All Articles