Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , 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 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: Message-ID: References: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII 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 0000000 \n 0000001 $ cat | od -c 0000000 \r \n 0000002 $ perl -pe 1 | od -c 0000000 \n 0000001 $ # Note, however: $ perl -pe 1 | cat | od -c 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/