I have a file as follows. file1.csv
H,2 A:B,pq
D,34 C:B,wq
D,64 F:B,rq
D,6 R:B,tq
I want to format 2nd a column as follows
H,02 0A:0B,pq
D,34 0C:0B,wq
D,64 0F:0B,rq
D,06 0R:0B,tq
I am able to separate the column and format it but cannot merge it I use following command
formated_nums =`awk -F"," '{print $2}' file1.csv | awk '{print $1}' | awk '{if(length($1)!=2){$1="0"$1}}1'`
formated_letters = `awk -F"," '{print $2}' file1.csv | awk '{print $2}' | awk -F":" '{if(length($1)!=2){$1="0"$1}; if(length($2)!=2){$2="0"$2}}1'| awk '{print $1":"$2}'`
Now I want to merge formated_nums and formated_letters with a space in between
I tried echo "${formated_nums} ${formated_letters}" but it takes variables as rows and appends the whole thing as a row
printfinstead ofprintthat add a new line at the end. See other reply to avoid piped awk. Awk is powerfull an can easily handle such double trnasformation, it is made for.H,2 0A:B,pq". Obviously all we have to go on is what you tell us so if you need to handle input like that (or anything else) then edit your question to include that in your sample input/output. And please do it soon before anyone else wastes time offering you solutions based on sample input that doesn't reflect your real input and so cannot work.