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>
Take a look at tail, more precisecly, it's --lines=+N switch:
tail --lines=+100 <file>
wc -l $1 | awk '{print $1}'
; lineno=expr $lineno - $2
; tail -n $lineno $1 ; }
Oct 30, 2009 at 8:53
tail -n
Apr 8, 2014 at 15:42
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'
tail
worked just fine in 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).
Jun 15, 2016 at 22:17
You can use NR parameter with the awk command:
cat <file> | awk '{if (NR>=7000) print}'
cat messages | awk '{if (NR>=7000 && NR <7003) print}'
shows you row 7000, 7001 and 7002 only.
Jun 30, 2017 at 6:26
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.