I had the impression sed wasn't blocking, because when I do say:
iostat | sed
sed
processes the data as it arrives, but when I do
iostat | sed | netcat
Then sed
blocks netcat
.
Am I right?
By default sed does not overwrite the original file; it writes to stdout (hence the result can be redirected using the shell operator > as you showed).
The sed command, short for stream editor, performs editing operations on text coming from standard input or a file. sed edits line-by-line and in a non-interactive way.
r is used to read a file and append it at the current point. The point in your example is the address /EOF/ which means this script will find the line containing EOF and then append the file specified by $thingToAdd after that point. Then it will process the rest of the file.
The I flag allows to match a pattern case insensitively. Usually i is used for such purposes, grep -i for example. But i is a command (discussed in append, change, insert chapter) in sed , so /REGEXP/i cannot be used.
sed
will work in buffered mode when it doesn't print to a terminal. This means that it will try to fill its internal buffer before doing any processing and output by default.
This is done to increase throughput, because normally in a pipe you don't care about the timing, but want as much data processed in a given time as possible.
Passing -u
to sed will tell it to work unbuffered, therefore working the same way it works when output goes to a terminal.
In addition to what @saua says, sed
is at least line oriented, that it, it read a line, then operates on it so it will always be buffering at least one line. In addition, sed
can work in multiline mode. If you are using a multiline pattern, then sed
can't output it's current buffer until it knows that the pattern either doesn't apply or the pattern has been processed.
I don't know if I understand the question right, but in your example, it should be like this:
Other than that, sed shouldn't need to read all its input to produce output.
Do you observe any delays that cannot be explained by this and some small buffering?
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With