The easiest way is probably without sed, which you mentioned:
df -h --output=avail /dev/dm-2| tail -n1
But purely with sed it would be something like this:
df -h --output=avail,source | sed -n ‘/\/dev\/dm-2/s!/dev/dm-2!!p’
-n
tells sed to not print lines by default
/[regex]/
selects the likes matching regex. We need to escape the slashes inside the regex.
s///
does search-and-replace, and has a special feature: it can use any character, not just a slash. So I used three exclamation points instead , so that I don’t need to escape the slashes. Here we replace the device with the empty string.
p
prints the result
Check the sed man page for more details: https://linux.die.net/man/1/sed
Virtual memory is different from swap memory.
Swap memory is used when you run out of physical memory, so the memory is extended to your storage.
Virtual memory is an abstraction that lies between programs using memory and the physical memory in the device. It can be something like compression and memory-mapped files, like mentioned.
And yes, some swap is still useful, up to something like 4G for larger systems.
And if you want to hibernate to disk, you may need as much swap as your physical memory. But maybe that’s changed. I haven’t done that in years.