Date: Sat, 05 Jun 2010 13:32:08 -0700 From: Doug Barton <dougb@FreeBSD.org> To: Bakul Shah <bakul@bitblocks.com> Cc: freebsd-hackers@freebsd.org Subject: Re: head behaviour Message-ID: <4C0AB448.2040104@FreeBSD.org> In-Reply-To: <20100605201242.C79345B52@mail.bitblocks.com> References: <20100605201242.C79345B52@mail.bitblocks.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On 06/05/10 13:12, Bakul Shah wrote: > Consider: > > $ yes | cat -n | (read a; echo $a; head -1) > 1 y > 2 y > > $ yes | cat -n | (head -1; read a; echo $a) > 1 y > 456 y It's not at all clear to me what you are trying to accomplish here. If what you want is to read only the first line of the output of yes, then what you'd want to do is: yes | cat -n | head -1 | (read a; echo $a) 1 y > As you can see, head reads far more than it should. This is > fine most of the time but often it results in surprising > output: > > # print ps header and all lines with sh in it > $ ps|(head -1; grep sh) > PID TT STAT TIME COMMAND I don't understand why you think this would work. There is no input to the grep command. The only reason it exits at all is that you are executing in a subshell. > # print first and last two lines > $ look xa | (head -2; tail -2) > xanthaline > xanthamic Same problem here. There is no input to the tail command. Doug -- ... and that's just a little bit of history repeating. -- Propellerheads Improve the effectiveness of your Internet presence with a domain name makeover! http://SupersetSolutions.com/
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4C0AB448.2040104>