Re: Grep can't match characters before EOL marker without ^M
- Date: Thu, 4 Jan 2018 14:51:19 -0500
- From: cyg Simple <cygsimple@xxxxxxxxx>
- Subject: Re: Grep can't match characters before EOL marker without ^M
On 1/3/2018 1:39 PM, arrl via cygwin wrote:
> On 1/3/2018 12:31 PM, David Karr wrote:
>> My cygwin version appears to be "2.9.0(0.318/5/3)".
>> If I have a text file that has a line that ends with "abc", and I try
>> to grep for "abc$", it doesn't match. I find that it does match "$"
>> and "abc^M$".
>> I've read some of the documentation about line endings in Cygwin.
>> I need to write some scripting that works on both Cygwin and Linux.
>> What do I need to do here?
> Consider running dos2unix on files containing ^M at line ends.
You might wish to test for a binary file before running dos2unix on it
though or even using sed to substitute ^M$ to remove them. Binary data
could contain a CRLF that would destroy the binary file if CR is removed.
Also consider doing the same instruction regardless of the OS because
you never know when your script meets a file from a different OS. In the
business world many people send files from Windows to *NIX and vice
versa. If a text file from *NIX is sent to a user of Windows be sure
that the file contains the appropriate CRLF or the user will just see
garbage unless they are a DevOPS person who knows how to deal with the
file. I can't count the number of times I've had to resend a file or
help someone adjust one just because the Windows default for .txt files
is Notepad which uses the CR to advance to the next line of the GUI.
Problem reports: http://cygwin.com/problems.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple