skip to Main Content

I’ve a simple text file, named samples.log. In this file I’ve several lines. Suppose I have a total of 10 lines. My purpose is to replace the first 5 lines of the file with the last file lines of the same file. For example:

line 1
line 2
line 3
line 4
line 5
line 6
line 7
line 8
line 9
line 10

Become:

line 6
line 7
line 8
line 9
line 10

In other words, I simply want to delete the first 5 lines of the file and then I want to shift up the last 5. I’m working on Linux. What is the most simple way to do this? Is there a command?
I’m working on a C program, but I think that is better to execute the linux command inside the program, instead of doing this operation in C, that I think would be quite difficult.

2

Answers


  1. You can use this command:

    tail -n $(($(cat samples.log | wc -l) - 5)) samples.log
    

    You calculate the total amount of lines:

    cat samples.log | wc -l
    

    From that, you subtract 5:

    $((x - 5))
    

    And you use that last number of lines:

    tail -n x samples.log
    
    Login or Signup to reply.
  2. Simply

      tail -n +6 samples.log
    

    will do the job. tail -n +NUM file will print the file starting with line NUM

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search