Skip site navigation (1)Skip section navigation (2)
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>