I would like to simulate GNU\'s head -n -3
, which prints all lines except the last 3, because head
on FreeBSD doesn\'t have this feature. So I am t
Another Awk solution that only uses minimal amount of buffers and prints lines quickly without needing to read all the lines first. It can also be used with pipes and large files.
awk 'BEGIN{X = 3; for(i = 0; i < X; ++i)getline a[i]}{i %= X; print a[i]; a[i++] = $0}'
how about :
seq 1 10 | perl -ne 'print if ( !eof )' | perl -ne 'print if ( !eof )' | perl -ne 'print if ( !eof )'
Pure bash and simple tools (wc and cut):
head -n $(($(wc -l file | cut -c-8)-3)) file
Disclaimer - I don't have access to FreeBSD right now, but this does work on OSX bash.
Nobody seems to have use sed
and tac
, so here's one:
$ seq 10 | tac | sed '1,3d' | tac
1
2
3
4
5
6
7