09-24-2009
I'm no expert, either, by any means, but here's my interpretation of it:
- The shell fork()s off a new process, redirects stdout to a pipe, and then exec()s cat
- Meanwhile, since the forked process runs in parallel, a second process is fork()ed off, has stdin redirected to use the same pipe, stdout redirected to a file, and exec()s sed
- If the first exec is delayed for any reason it's possible that the file redirection/trucation takes place before cat can even start to read the file. When it gets around to reading it, it sees an empty file.
10 More Discussions You Might Find Interesting
1. Shell Programming and Scripting
hello
whats the difference between excuting a shell script as
a)sh myscript.sh
b). ./myscript.sh
i noticed that my shell script works fine when i run it as . ./myscript
.sh but fails when i run it as sh myscript.sh could anybody explain why.
the shell script is very simple
... (9 Replies)
Discussion started by: xiamin
9 Replies
2. Shell Programming and Scripting
Hi,
Could you please explain me the below statement -- phrase wise.
sed -e :a -e '$q;N;'$cnt',$D;ba' abc.txt > xyz.txt
if suppose $cnt contains value: 10
it copies last 9 lines of abc.txt to xyz.txt
why it is copying last 9 rather than 10.
and also what is ba and $D over there in... (4 Replies)
Discussion started by: subbukns
4 Replies
3. UNIX for Advanced & Expert Users
$ echo a.bc | sed -e "s/\|/\\|/g"
|a|.|b|c|
$
Is the behavior of the sed statement expected ? Or is this a bug in sed ?
OS details
Linux 2.6.9-55.0.0.0.2.ELsmp #1 SMP Wed May 2 14:59:56 PDT 2007 i686 i686 i386 GNU/Linux (8 Replies)
Discussion started by: vino
8 Replies
4. Shell Programming and Scripting
I've written a small script to replace certain words in all the the files in a directory.
#!/bin/sh
#Get list of files to be edited
file_list=`ls -p`
for i in $file_list
do
echo "Processing $i"
alteredi=`echo "$i" | sed -e 's/\//d/'`
if
then
if
then
#actual altering (2 Replies)
Discussion started by: Peetrus
2 Replies
5. Shell Programming and Scripting
Hi,
The following command works fine for me, but I could not grasp the logic working behind of sed command, it's obscure to me :( :confused:
echo "./20080916/core/audioex.amr" | sed "s%\(\)/%\1_%g"
o/p: ./20080916_core_audioex.amr
Could anyone please explain to me in detail, that how... (6 Replies)
Discussion started by: royalibrahim
6 Replies
6. Shell Programming and Scripting
Hi all,
I want to do a very simple thing with sed. I want to print out the line number of a disk I have defined in /etc/exports, so I do:
It's all good, but here's the problem. When I define md0 in a variable, I get nothing from sed:
Why is that? can anybody please help?
Thanks (2 Replies)
Discussion started by: alirezan
2 Replies
7. UNIX for Dummies Questions & Answers
can someone please explain the below sed command..
sed 's/\(*|\)\(.*\)/\2\1/' (6 Replies)
Discussion started by: raghu_shekar
6 Replies
8. Shell Programming and Scripting
I suppose that this is not actually a script question, but I noticed this while working on a bash script homework assignment and I have been impressed with the quality of posts here -- so that is why I posted it here.
I have this text file named textfile:
total 40
-rwxr-xr-x 1 joeblow... (2 Replies)
Discussion started by: landog
2 Replies
9. Shell Programming and Scripting
Will someone give me an explanation on how the sed command below works.
sed 's/.*//'
Thanks! (3 Replies)
Discussion started by: scj2012
3 Replies
10. UNIX for Advanced & Expert Users
I have a log with entries like:
out/target/product/imx53_smd/obj/STATIC_LIBRARIES/libwebcore_intermediates/Source/WebCore/bindings/V8HTMLVideoElement.cpp
: target thumb C++: libwebcore <=... (8 Replies)
Discussion started by: glev2005
8 Replies
LEARN ABOUT MOJAVE
io::pipe
IO::Pipe(3pm) Perl Programmers Reference Guide IO::Pipe(3pm)
NAME
IO::Pipe - supply object methods for pipes
SYNOPSIS
use IO::Pipe;
$pipe = IO::Pipe->new();
if($pid = fork()) { # Parent
$pipe->reader();
while(<$pipe>) {
...
}
}
elsif(defined $pid) { # Child
$pipe->writer();
print $pipe ...
}
or
$pipe = IO::Pipe->new();
$pipe->reader(qw(ls -l));
while(<$pipe>) {
...
}
DESCRIPTION
"IO::Pipe" provides an interface to creating pipes between processes.
CONSTRUCTOR
new ( [READER, WRITER] )
Creates an "IO::Pipe", which is a reference to a newly created symbol (see the "Symbol" package). "IO::Pipe::new" optionally takes two
arguments, which should be objects blessed into "IO::Handle", or a subclass thereof. These two objects will be used for the system call
to "pipe". If no arguments are given then method "handles" is called on the new "IO::Pipe" object.
These two handles are held in the array part of the GLOB until either "reader" or "writer" is called.
METHODS
reader ([ARGS])
The object is re-blessed into a sub-class of "IO::Handle", and becomes a handle at the reading end of the pipe. If "ARGS" are given
then "fork" is called and "ARGS" are passed to exec.
writer ([ARGS])
The object is re-blessed into a sub-class of "IO::Handle", and becomes a handle at the writing end of the pipe. If "ARGS" are given
then "fork" is called and "ARGS" are passed to exec.
handles ()
This method is called during construction by "IO::Pipe::new" on the newly created "IO::Pipe" object. It returns an array of two objects
blessed into "IO::Pipe::End", or a subclass thereof.
SEE ALSO
IO::Handle
AUTHOR
Graham Barr. Currently maintained by the Perl Porters. Please report all bugs to <perlbug@perl.org>.
COPYRIGHT
Copyright (c) 1996-8 Graham Barr <gbarr@pobox.com>. All rights reserved. This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
perl v5.18.2 2013-11-04 IO::Pipe(3pm)