unix/linux: using paste to turn separate lines into a comma separated list
Posted by jpluimers on 2021/11/16
Never to old to learn new things: I was totally unaware of the GNU paste tool that is available on virtually all unix/Linux/BSD core installs.
Thanks [WayBack] zeppelin for answering this question at [WayBack] linux – Turning separate lines into a comma separated list with quoted entries – Unix & Linux Stack Exchange:
You can add quotes with sed and then merge lines with paste, like that:
sed 's/^\|$/"/g'|paste -sd, -
If you are running a GNU coreutils based system (i.e. Linux), you can omit the trailing
'-'
.If you input data has DOS-style line endings (as @phk suggested), you can modify the command as follows:
sed 's/\r//;s/^\|$/"/g'|paste -sd, -
Now I can get a comma separated list of for instance ssh available mac algorithms:
# ssh -Q mac | paste -sd, - hmac-sha1,hmac-sha1-96,hmac-sha2-256,hmac-sha2-512,hmac-md5,hmac-md5-96,umac-64@openssh.com,umac-128@openssh.com,hmac-sha1-etm@openssh.com,hmac-sha1-96-etm@openssh.com,hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-md5-etm@openssh.com,hmac-md5-96-etm@openssh.com,umac-64-etm@openssh.com,umac-128-etm@openssh.com
Documentation:
- [Wayback] paste(1): merge lines of files – Linux man page
Write lines consisting of the sequentially corresponding lines from each FILE, separated by TABs, to standard output. With no FILE, or when FILE is -, read standard input.
- [Wayback] paste (Unix) – Wikipedia
–jeroen
Leave a Reply