grep --ignore-case --only
This is a known bug on the initial 2.5.1, and has been fixed in early 2007 (Redhat 2.5.1-5) according to the bug reports. Unfortunately Apple is still using 2.5.1 even on Mac OS X 10.7.2.
You could get a newer version via Homebrew (3.0) or MacPorts (2.26) or fink (3.0-1).
Edit: Apparently it has been fixed on OS X 10.11 (or maybe earlier), even though the grep version reported is still 2.5.1.
If your grep -i does not work then try using tr command to convert the the output of your file to lower case and then pipe it into standard grep with whatever you are looking for. (it sounds complicated but the actual command which I have provided for you is not !).
Notice the tr command does not change the content of your original file, it just converts it just before it feeds it into grep.
1.here is how you can do this on a file
tr '[:upper:]' '[:lower:]' <your_file.txt|grep what_ever_you_are_searching_in_lower_case
2.or in your case if you are just echoing something
echo "ABC"|tr '[:upper:]' '[:lower:]' | grep abc