I have an output of lines generated as such:
LINES=$(for i in {scsi,sat,ata,nvme}; do smartctl --scan -d $i ; done | sort | uniq | grep -v '^#|/dev/sd' | awk '{print$2,$3,$5}' | sed 's/,\r$//') ; while IFS= read -r line; do smartctl -i $line; done <<< "$LINES" | grep -v Family | grep -e Model -e Product: -e Vendor: -e "User Capacity" -e "Total NVM Capacity" | awk -F"[:\t]" '{print$2}'
Giving the following output:
SEAGATE
ST2000NX0273
2,000,398,934,016 bytes [2.00 TB]
SEAGATE
ST2000NX0273
2,000,398,934,016 bytes [2.00 TB]
SEAGATE
ST2000NX0273
2,000,398,934,016 bytes [2.00 TB]
SEAGATE
ST2000NX0273
2,000,398,934,016 bytes [2.00 TB]
SEAGATE
ST2000NX0273
2,000,398,934,016 bytes [2.00 TB]
SEAGATE
ST2000NX0273
2,000,398,934,016 bytes [2.00 TB]
INTEL SSDSC2KB240G7
240,057,409,536 bytes [240 GB]
INTEL SSDPE2KX020T7
2,000,398,934,016 [2.00 TB]
INTEL SSDPE2KX020T7
2,000,398,934,016 [2.00 TB]
I'm hoping to put each HDD information into it's own line, while simultaneously parsing the Capacity to display it's human-readable format. It's ok if the capacitt still has [brackets]. Desired output:
SEAGATE ST2000NX0273 2.00 TB
SEAGATE ST2000NX0273 2.00 TB
SEAGATE ST2000NX0273 2.00 TB
SEAGATE ST2000NX0273 2.00 TB
SEAGATE ST2000NX0273 2.00 TB
SEAGATE ST2000NX0273 2.00 TB
INTEL SSDSC2KB240G7 240 GB
INTEL SSDPE2KX020T7 2.00 TB
INTEL SSDPE2KX020T7 2.00 TB