In Ubuntu I'm working on a C file that was originally created under Windows and then committed to source control.  `Vim` shows the file format is "dos", which I gather just means it has `CR/LF` line endings.  I wanted to get a list of function definitions in the file by using `grep` to find the regular expression `')$'`, but it returned nothing.  When I changed the file format to "unix" (`:set ff=unix` in `vim`) then the `grep` worked as expected.

Is this a bug, or does `grep` officially not support `CR/LF` line endings?  I did find this on the `man` page:

> -U
    Treat the file(s) as binary. By default, under MS-DOS and MS-Windows, grep guesses whether a file is text or binary as described for the --binary-files option. **If grep decides the file is a text file, it strips carriage returns from the original file contents (to make regular expressions with ^ and $ work correctly).** Specifying -U overrules this guesswork, causing all files to be read and passed to the matching mechanism verbatim; if the file is a text file with CR/LF pairs at the end of each line, this will cause some regular expressions to fail. This option has no effect on platforms other than MS-DOS and MS-Windows. 

But it does say *under MS-DOS and MS-Windows* in the previous sentence, so I don't know if that applies at all here?

Is there some other regular expression that *should* match `CR/LF`, or some other command-line option to `grep` I'm not seeing that would help?  Or is the only solution really for me to create a bunch of commit-noise by reformatting my colleagues' files?