cool sed/grep magic to convert output to csv format
I generallly keep doing this a lot, so thought will share with you. Lets assume we are capturing free ouput every min/hour/or whatever. The output looks like this:
Time: Mon Jan 21 23:59:10 AEDT 2019
——————-total used free shared buff/cache available
Mem: 32014 8656 1735 1697 21621 21308
Swap: 51195 75 51120
then we can use some grep and sed to convert this to something like this:
Mon Jan 21 23:59:10 AEDT 2019,32014,8656,1735,1697,21621,21308
This is the code that I used for this:
zgrep -E '^(Time|Mem):' free.20190121.gz |sed -E '/Mem/ s/\s+/,/g'|sed -E 's/^(Time|Mem):\s*//' |sed ':a;$!N;s/\n//;P'
Explanation: use zgrep to get the line starting with time or mem use sed to convert multiple spaces to single space use sed again to get only the line containing Memory or time use sed the last time to merge the 2 lines
Related Articles:
- 2018/12/10 Directories with maximum number of files
- 2018/11/12 Get to your ebooks quickly
- 2016/08/08 Generate random string for various use case
- 2016/01/05 image ordering by Original Date Time using bash script
- 2015/10/15 Get count of lines in scripts (shell)
Authored By Amit Agarwal
Amit Agarwal, Linux and Photography are my hobbies.Creative Commons Attribution 4.0 International License.