How do you buffer streamed lines?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How do you buffer streamed lines?
# 15  
Old 07-19-2007
using an array as a buffer

I dont know if there was a misunderstanding, but I am trying to get the script to buffer the last n lines that were parsed through it... n is a command-line argument

The biggest problem is file size... if I run the while loop that runs the sed, that ends up being n-squared time... which for a ~1GB log file = disaster

I wish I could use the solution posted here: Extracting Data From Large Logs but unfortunately I dont have a simple search... instead, I have to first search for a discrepancy and then print out n+/-x lines

This is what I have working so far (no buffer implemented):
Code:
egrep -n '^[0-9]' $file | \
while IFS="[.|:]" read number datetime min sec milli rest; do
    milliseconds=$(date -d "$datetime:$min:$sec" +%s)$milli
    line="$number:$datetime:$min:$sec.$milli|$rest"
    if [[ $previous -ne 0 ]] ; then
        (( difference = milliseconds - previous ))
    else
        difference=0
    fi
    if [[ $difference -gt $maxTime ]] ; then
        echo $line
    fi
    previous=$milliseconds
done

Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Programming

Separate input buffer into multiple lines

Hi All I have a very tricky problem, not able to solve it. Hence asking this question. I have a code portion like this - int parse_msg(in_buf,line1,line2,sccs_line) char in_buf; char line1; char line2; char sccs_line; { .... (void)fprintf(trace_fp,"parse_msg1 in_buf = %s \n",... (0 Replies)
Discussion started by: nsinha
0 Replies

2. Shell Programming and Scripting

Expect_out(buffer) works but it doesn't get all lines

Hello "expect" experts I am new at Expect. I have searched for a little while how to capture multiple lines with Expect and I am almost succeeded on that but I don't get all the lines of a command's output that the script executes on a server. Here is how my script works in a nutshell - ... (6 Replies)
Discussion started by: capacho6666
6 Replies

3. Programming

buffer in C

Hello, size_t write(int fd, const void *buf, size_t count) { static size_t (*write_func)(int, const void *, size_t) = NULL; if (!write_func) write_func = (size_t(*)(int, const void *, size_t)) dlsym(RTLD_NEXT, "write"); char tmp; memcpy(tmp,buf,count); ... (3 Replies)
Discussion started by: chercheur857
3 Replies

4. UNIX for Dummies Questions & Answers

vi next buffer

Hello, I am using vi to edit file vi filea :e fileb and :e# to switch between filea and fileb Now, I'd like to have many files open at the same time and have a way to cycle between them. :bn does not work; when I type it, nothing happens... Is there something to add to the... (1 Reply)
Discussion started by: JCR
1 Replies

5. Shell Programming and Scripting

How to Strip lines off Streamed EDI Output

Attached is a streamed EDI ANSI X12 output where the segment terminator/delimiter is a tilde ~ character. Is it possible to do the following pseudo-code in a unix script (using either sed, awk and/or grep)? Open file StreamedOutput.txt Search for ISA and delete the data up to the tilde ~ char... (7 Replies)
Discussion started by: sapedi
7 Replies

6. Shell Programming and Scripting

Increase the buffer size to read lengthy lines

Hi All, I am trying to read output from a command. The output format is as follows: Thursday 13 Mar 2008 Information This is sample text Friday 14 Mar 2008 Warning This is one more sample text First line contains informtation (date etc) and the 2nd line contains some information. ... (3 Replies)
Discussion started by: ssunda6
3 Replies

7. Shell Programming and Scripting

Using sed buffer

Hi. I have some questions about using sed. I cannot use the hold buffer. For example i want to put first line to the buffer than take second line and append the buffer to the second line.then 3th to the all. It will be like 2->1->3 th lines. Any idea? (1 Reply)
Discussion started by: burakkilic
1 Replies

8. UNIX for Advanced & Expert Users

vm and buffer cache

i have a serious doubht about the assignment of memory in hp-ux system . i read from somewhere that the page allocation in hp-ux is not unified unlike compaq . i wanted to know in hp-ux kernel ,once the pages are assigned for the univarsal buffer cache... (2 Replies)
Discussion started by: vish_shan
2 Replies

9. UNIX for Advanced & Expert Users

About Buffer

Hi, if someone now how can look the last commands has used for last week? (1 Reply)
Discussion started by: Niko
1 Replies
Login or Register to Ask a Question
POSTLOG(1)						      General Commands Manual							POSTLOG(1)

NAME
postlog - Postfix-compatible logging utility SYNOPSIS
postlog [-iv] [-c config_dir] [-p priority] [-t tag] [text...] DESCRIPTION
The postlog(1) command implements a Postfix-compatible logging interface for use in, for example, shell scripts. By default, postlog(1) logs the text given on the command line as one record. If no text is specified on the command line, postlog(1) reads from standard input and logs each input line as one record. Logging is sent to syslogd(8); when the standard error stream is connected to a terminal, logging is sent there as well. The following options are implemented: -c config_dir Read the main.cf configuration file in the named directory instead of the default configuration directory. -i Include the process ID in the logging tag. -p priority Specifies the logging severity: info (default), warn, error, fatal, or panic. -t tag Specifies the logging tag, that is, the identifying name that appears at the beginning of each logging record. A default tag is used when none is specified. -v Enable verbose logging for debugging purposes. Multiple -v options make the software increasingly verbose. ENVIRONMENT
MAIL_CONFIG Directory with the main.cf file. CONFIGURATION PARAMETERS
The following main.cf parameters are especially relevant to this program. The text below provides only a parameter summary. See postconf(5) for more details including examples. config_directory (see 'postconf -d' output) The default location of the Postfix main.cf and master.cf configuration files. syslog_facility (mail) The syslog facility of Postfix logging. syslog_name (see 'postconf -d' output) The mail system name that is prepended to the process name in syslog records, so that "smtpd" becomes, for example, "postfix/smtpd". SEE ALSO
postconf(5), configuration parameters syslogd(8), syslog daemon LICENSE
The Secure Mailer license must be distributed with this software. AUTHOR(S) Wietse Venema IBM T.J. Watson Research P.O. Box 704 Yorktown Heights, NY 10598, USA POSTLOG(1)