That is because $ would match end of line and not end of string. Depending on the exact nature of the input you could match for space/tab instead, or just not a letter:
to be on the safe side (within the square brackets, there's a space and a <TAB> char). If your sed doesn't support the -r (or -E) option, replace the + with \+ .
But there is one catch in the case of sed. If the match is on the first line, then it will not work.. To handle this case you need a GNU extension (GNU sed):
gsed -n '0,/\<LAC\>/p' file
awk does not have this problem and can also use a range expression and also can have an exact field match as noted by MadeInGermany, so you do not need to delimit the search:
awk 'NR==1, $1=="LAC"||$2=="LAC"' file
or
awk -v s=LAC 'NR==1, $1==s||$2==s' file
MadeinGermany's approach with the exit statement would be more efficient.
--
This exit approach would also work with regular sed and this does not have the match-on-line-1 catch:
sed '/^LAC$/q; /^LAC[[:blank:]]/q; /[[:blank:]]LAC[[:blank:]]/q' file