Mac OS X sysctl get total and free memory size

You don't.

Well, except for total memory size, which you could have found with sysctl -a | grep mem (hw.memsize = 4294967296 on my machine).

vm_stat displays the same information as Activity does, you just need to multiply the value you want by page size. Both are provided in the output.

top -l 1 | grep PhysMem: | awk '{print $10}'

top -l 1 runs top in logging mode (e.g. file output, not display/terminal output) for one iteration, then quits. The grep/awk filters for the free memory value in top output.

No grep is needed.

sysctl -n hw.memsize