This is the mail archive of the
cygwin
mailing list for the Cygwin project.
Re: Grep and matching end of line (anchoring)
- From: Reini Urban <rurban at x-ray dot at>
- To: "Dalton, Barnaby" <Barnaby dot Dalton at radioscape dot com>
- Cc: "'cygwin at cygwin dot com'" <cygwin at cygwin dot com>
- Date: Fri, 19 Nov 2004 13:41:11 +0100
- Subject: Re: Grep and matching end of line (anchoring)
- References: <5D139685F337FC44A97D330F8F1BF6FA07DEEB@MORSE>
Dalton, Barnaby schrieb:
I'm having trouble gettting grep to match end of line when used with
files/utlilities that use DOS linefeeds. For example:
cat files.txt | grep '\.h$'
produces no output. However, if I stick a filter in the middle to change the
line endings:
cat files.txt | perl -pe 's/\r\n/\n/' | grep '\.h$'
I get:
file1.h
file2.h
as expected.
pipes are treated as binmode, so they don't convert eol from \r\n to \n.
without pipe it should work on a textmount:
grep '\.h$' files.txt
or grep '\.h$' < files.txt
Should grep's $ match \r\n or should I expect to have to convert line
endings?
grep's "$" is not expected to do textmode magic if stdin is binmode.
BTW:
cat files.txt | sed 's,\r\n,\n,' | grep '\.h$'
is simplier.
Someone might think of a new textmode pipe operator (like a new "t|"),
but I don't consider that a good idea.
man bash /REDIRECTION and /Pipelines
--
Reini Urban
http://xarch.tu-graz.ac.at/home/rurban/
--
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/