It is suggested that you use Python instead of Shell to manipulate text files!!
Besides passing an unsigned integer as parameter to the option -n, 
you can also pass a signed integer to it.
When a signed integer is passed to -n, 
it means from/to (inclusive/exclusive similar to most programming languages) the row with this index (1-based). 
More specifically, 
head -n +/-k means take rows 1 (inclusive) to +/-k (exclusive).
tail -n +/-k means take rows +/-k (inclusive) to the last row. 
Below are some examples to help you fruther understand how it works.
- 
Print all but the last 5lines.# -5 means without the last 5 lines head -n -5 file_name
- 
Print lines 6 and after (i.e., all but the first 5lines).# +6 means starting from line 6 tail -n +6 file_name
- 
Print lines 10 to 20. head -n 20 file_name | tail -n +10 # or you can use (11 = 20 - 10 + 1) tail -n +10 file_name | head -n 11Please refer to Print Rows from a Text File for better ways using sedandawk.