www.delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2004/08/21/19:07:31

Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com
X-Authentication-Warning: slinky.cs.nyu.edu: pechtcha owned process doing -bs
Date: Sat, 21 Aug 2004 19:07:21 -0400 (EDT)
From: Igor Pechtchanski <pechtcha AT cs DOT nyu DOT edu>
Reply-To: cygwin AT cygwin DOT com
To: Hannu E K Nevalainen <_garbage_collector_ AT telia DOT com>
cc: cygwin AT cygwin DOT com
Subject: RE: grep: $ in PATTERN doesn't seem to work properly
In-Reply-To: <NGBBLLIAMFLGJEOAJCCEEEDPDNAA._garbage_collector_@telia.com>
Message-ID: <Pine.GSO.4.61.0408211845500.19750@slinky.cs.nyu.edu>
References: <NGBBLLIAMFLGJEOAJCCEEEDPDNAA DOT _garbage_collector_ AT telia DOT com>
MIME-Version: 1.0
X-Scanned-By: MIMEDefang 2.39

On Sat, 21 Aug 2004, Hannu E K Nevalainen wrote:

> Note that there is a difference depending on how you create the file; I'll
> hand over to cygwin-specialists to explain (or ponder on) why it has to be
> this way.
> 
> I'm running BINARY mounts all over, still I get the behaviour below.
> [snip]
> === a) ===
> $ cd			# cd to $HOME
> $ cat >tmp
> Line 1
> Line 2
> 
> Line 3
> Line 4
> Line 5
> $POSIX="" - Hannu AT P450 ~ bash (P)PID=(852)2340, s=0
> $ od -w8 -t x1z tmp
> 0000000 4c 69 6e 65 20 31 0d 0a  >Line 1..<
> 0000010 4c 69 6e 65 20 32 0d 0a  >Line 2..<
> 0000020 0d 0a 4c 69 6e 65 20 33  >..Line 3<
> 0000030 0d 0a 4c 69 6e 65 20 34  >..Line 4<
> 0000040 0d 0a 4c 69 6e 65 20 35  >..Line 5<
> 0000050 0d 0a                    >..<
> 0000052
> $ grep '1$' tmp
> $ d2u tmp 				# dos2unix
> tmp: done.
> $ grep '1$' tmp
> Line 1
> 
> === b) ===
> $ cd
> $ ls -l tmp2
> ls: tmp2: No such file or directory
> $ for (( i=1 ; i<6 ; i++ )) do echo >>tmp2 "Line $i";done
> $ od -w7 -t x1z tmp2
> 0000000 4c 69 6e 65 20 31 0a  >Line 1.<
> 0000007 4c 69 6e 65 20 32 0a  >Line 2.<
> 0000016 4c 69 6e 65 20 33 0a  >Line 3.<
> 0000025 4c 69 6e 65 20 34 0a  >Line 4.<
> 0000034 4c 69 6e 65 20 35 0a  >Line 5.<
> 0000043
> $ grep '1$' tmp
> Line 1
> 
> $ rm tmp tmp2

This has to do with the way "cat" behaves.  By default, Windows sends 
textmode line endings from the console.  Most applications (including od, 
echo, bash, etc) compensate for this somehow, except "cat", which *always* 
replicates the output character by character, doing no processing 
*whatsoever*.  AFAIK, this is by design.

Case in point:

$ od -c
<Enter><Ctrl-D>
0000000  \n
0000001
$ cat | od -c
<Enter><Ctrl-D>
0000000  \r  \n
0000002
$ perl -pe 1 | od -c
<Enter><Ctrl-D>
0000000  \n
0000001
$ # Note, however:
$ perl -pe 1 | cat | od -c
<Enter><Ctrl-D>
0000000  \n
0000001
$ 

HTH,
	Igor
-- 
				http://cs.nyu.edu/~pechtcha/
      |\      _,,,---,,_		pechtcha AT cs DOT nyu DOT edu
ZZZzz /,`.-'`'    -.  ;-;;,_		igor AT watson DOT ibm DOT com
     |,4-  ) )-,_. ,\ (  `'-'		Igor Pechtchanski, Ph.D.
    '---''(_/--'  `-'\_) fL	a.k.a JaguaR-R-R-r-r-r-.-.-.  Meow!

"Happiness lies in being privileged to work hard for long hours in doing
whatever you think is worth doing."  -- Dr. Jubal Harshaw

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019