Tail a log into an excerpt in real time
In my opinion, what you have is quite elegant.
As a solution, how about putting set +e
just before the kill, and set -e
after? Since you are expecting the error status when tail is killed, don't look for it.
How can I extract a predetermined range of lines from a text file on Unix?
sed -n '16224,16482p;16483q' filename > newfile
From the sed manual:
p -
Print out the pattern space (to the standard output). This command is usually only used in conjunction with the -n command-line option.n -
If auto-print is not disabled, print the pattern space, then, regardless, replace the pattern space with the next line of input. If
there is no more input then sed exits without processing any more
commands.q -
Exitsed
without processing any more commands or input.
Note that the current pattern space is printed if auto-print is not disabled with the -n option.
and
Addresses in a sed script can be in any of the following forms:
number
Specifying a line number will match only that line in the input.An address range can be specified by specifying two addresses
separated by a comma (,). An address range matches lines starting from
where the first address matches, and continues until the second
address matches (inclusively).
Replay a log file with NodeJS as if it were happening in real-time
If you want to "play them back" with the actual time difference, a setTimeout
is pretty much what you have to do.
const processEntry = (entry, index) => {
index++;
const nextEntry = getEntry(index);
if (nextEntry == null) return;
const timeDiff = nextEntry.time - entry.time;
emitEntryEvent(entry);
setTimeout(processEntry, timeDiff, nextEntry, index);
};
processEntry(getEntry(0), 0);
This emits the current entry and then sets a timeout based on the difference until the next entry. getEntry
could either fetch lines from a prefilled array or fetch lines individually based on the index. In the latter case only two lines of data would only be in memory at the same time.
Automatically capture output of last command into a variable using Bash?
This is a really hacky solution, but it seems to mostly work some of the time. During testing, I noted it sometimes didn't work very well when getting a ^C on the command line, though I did tweak it a bit to behave a bit better.
This hack is an interactive mode hack only, and I am pretty confident that I would not recommend it to anyone. Background commands are likely to cause even less defined behavior than normal. The other answers are a better way of programmatically getting at results.
That being said, here is the "solution":
PROMPT_COMMAND='LAST="`cat /tmp/x`"; exec >/dev/tty; exec > >(tee /tmp/x)'
Set this bash environmental variable and issues commands as desired. $LAST
will usually have the output you are looking for:
startide seth> fortune
Courtship to marriage, as a very witty prologue to a very dull play.
-- William Congreve
startide seth> echo "$LAST"
Courtship to marriage, as a very witty prologue to a very dull play.
-- William Congreve
Related Topics
Page Fault in Interrupt Context
How to Use Sed to Replace a String in a File with a Shell Variable
Grunt Karma Testing on Vagrant When Host Changes Sources Grunt/Karma Doesn't Detect It
How to Get Window Id for Xdotool Automatically
Open Website from Within Eclipse's Internal Browser
How to Set Umask Default for an User
How to Display Nc Return Value in Linux Shell Script
Is There Any General Interfaces on Linux to Simulate Mouse Movements and Click
Accept Multiple Lines of Input in a Bash Script
Running Linux Container on Docker Windows
Setting Path to Shared Library Inside a Makefile for Compile
How to View Function Names and Parameters Contained in an Elf File
Tensorflow Recommended System Specifications
How to Handle Sigsegv Signal in Userspace Using Rust
Make for Compiling - All *.C Files in Folders & Subfolders in Project
Bash Script to Mkdir on Each Line of a File That Has Been Split by a Delimiter
Jmp Unexpected Behavior in Shellcode When Next(Skipped) Instruction Is a Variable Definition