I believe what you're trying to accomplish is probably best (and AFAIK only) possible combining multiple commands as you're currently doing. With some clever shell scripting and piped data, you could get the output you're looking for.
You seem to be up against some tenants of 'The UNIX Philosophy:'
- Make each program do one thing well. To do a new job, build afresh rather than complicate old programs by adding new features.
- Expect the output of every program to become the input to another, as yet unknown, program. Don't clutter output with extraneous information.
This is particularly evident in programs that output text, like lsof. Doug McIlroy summarized his earlier statement years later:
Write programs that do one thing and do it well. Write programs to work together. Write programs to handle text streams, because that is a universal interface.
While it may not help you get the formatted output you're looking for, The Art of UNIX Programming is a good read, and where I found sources for those quotes.