You can use
grep -E "(^|[[:blank:]])$var($|[[:blank:]])"
Or, assuming it is a GNU grep (as suggested by Glenn Jackman):
grep -P '(?<!\S)\Q'"$var"'\E(?!\S)'
Choose the second one in case your $var contains a literal text to search for and $var can hold values containing special regex metacharacters like (, ), [, {, +, ^, etc., see What special characters must be escaped in regular expressions?
See an online demo:
s='hi helo tmp#100000 bye
100000 hi bye
hi 100000 bye'
var=100000
grep -E "(^|[[:blank:]])$var($|[[:blank:]])" <<< "$s"
# => 100000 hi bye
#    hi 100000 bye
Here,
- -Eenables the POSIX ERE syntax,- -Penables a PCRE syntax
- (^|[[:blank:]])- matches either start of input or a horizontal whitespace
- (?<!\S)\Q-- (?<!\S)checks if the char immediately on the left is a whitespace or start of string and- \Qstarts quoting the pattern, the- $varwill be parsed as a literal text
- $var- the- varcontents
- ($|[[:blank:]])- matches either end of input or a horizontal whitespace.
- \E(?!\S)-- \Estops quoting and- (?!\S)requires either a whitespace or end of string immediately on the right.