Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to use shell to continuously process tail -f new lines in real time?

There is a file on the linux server, which new lines appended to it aperiodically. I need to process new line, parse it and use other command or script to process it . Check the file periodically is not acceptable, I need a real time solution. No other language (Python, Perl) is available on the server, only shell.

Now, I'm trying to assign the new line to a shell variable, and then process it. But can not find a good way to do that. Another problem is I need to rely on some result former when processing new lines. For example, when I process the 11th line, maybe the 5th line result is required. So some variables needed to store the result before, and I need to use them in the loop.

Any solution or any better suggestion for my case?

like image 268
Germinate Avatar asked Sep 13 '25 12:09

Germinate


1 Answers

Try the code below

#!/bin/bash
process_new_line() {
    local var= '' #declare some local variables here 
    read
    while true
    do
        #process $REPLY 
        #The new line content is in the variable $REPLY 
        #store the result in the local variable according to your rules.
        read
    done
}

tail -f the_file | process_new_line

Use a function will solve your problem. You could use local variable to store the result, and $REPLY hold the new line content.

like image 102
shuerguo Avatar answered Sep 15 '25 05:09

shuerguo