54

What is the best way to output from a file starting from a specific line (big number like 70000). Something like:

cat --line=70000 <file>
gronostaj
  • 55,965
  • 20
  • 120
  • 179
vonhogen
  • 2,359
  • 4
  • 29
  • 39

5 Answers5

78

Take a look at tail, more precisecly, it's --lines=+N switch:

tail --lines=+100 <file>
Svend
  • 2,954
  • 1
  • 19
  • 13
  • Wow. I didn't know this even after using this on linux for 8 years ! I always used a bash fn ! Thanks ! getFromLine () { lineno=`wc -l $1 | awk '{print $1}'` ; lineno=`expr $lineno - $2` ; tail -n $lineno $1 ; } – secureBadshah Oct 30 '09 at 08:53
  • 4
    As a note, this does not work on Mountain Lion (Darwin Kernel Version 13.1.0). The variant for Mountain lion is `tail -n` – Kaushik Ghose Apr 08 '14 at 15:42
25

The most obvious way is tail. The syntax might be slightly different depending on what OS you are using:

tail -n +70000

If you can not get tail to work, you could use sed, but it might end up slower:

sed -pe '1,69999d'
Peter Mortensen
  • 12,090
  • 23
  • 70
  • 90
Chris Johnsen
  • 39,401
  • 6
  • 111
  • 111
  • 1
    `tail` worked just fine in [MinGW](http://en.wikipedia.org/wiki/MinGW) (on a 600 MB text file). The runtime was only a few seconds (but the input file could have been in the file cache already). – Peter Mortensen Jun 15 '16 at 22:17
5

You can use NR parameter with the awk command:

cat <file> | awk '{if (NR>=7000) print}'
Jo Shepherd
  • 785
  • 5
  • 20
  • 37
  • 2
    You can use this command with other limits. As a sample:`cat messages | awk '{if (NR>=7000 && NR <7003) print}'` shows you row 7000, 7001 and 7002 only. – Jo Shepherd Jun 30 '17 at 06:26
4

If instead of a line number you need to start listing at the line containing a given $phrase, try the following.

more -1000 +/"$phrase" yourfilename | sed '1,4d'

The -1000 will continuously list text for up to 1000 lines; you can change this as needed. The sed command will chop off the first 4 lines of output, which were automatically inserted by more, containing a blank line, the message "... skipping", and the two lines preceding your intended starting line. I guess this may vary depending on your system.

Indrek
  • 24,204
  • 14
  • 90
  • 93
0

tail +250

more about unix cat command

  • 2
    fascinating link, but it doesn't really give any information that applies to this question, and your `tail` suggestion is the same as the accepted and other answers from weeks ago. why bother to post? – quack quixote Nov 18 '09 at 05:48
  • The link is broken - `...can't find the server at www.scripterworld.com.` – Peter Mortensen Dec 17 '16 at 18:42