abc_hosts,pwd_host_id,pwd_host_id,hostname,ddd_status,dddd_status,start_hosts,,,,,,,,,,,,,,,,,,,,1,o1,fhffhfh,1,1,fff,fdfd,172.33.33.33,172.30.30.12,172.30.30.11,oreere.dff,43,443343,1111,43435,1099,43434443444,3232321312312end_hosts,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,abc_hosts,pwd_host_id,pwd_host_id,hostname,ddd_status,dddd_status,start_hosts2,,,,,,,,,,,,,,,,,,,,1,o1,fhffhfh,1,1,fff,fdfd,172.33.33.33,172.30.30.12,172.30.30.11,oreere.dff,43,443343,1111,43435,1099,43434443444,3232321312312end_hosts2,,,,,,,,,,,,,,,,,,,
How to write the bash script dynamic to print row and columns data and update the same data in the same file?
bash;shell script;text processing;array;csv
This awk script should get you started:BEGIN { FS = , }$1 {    if ($1 == end_ tablename) {        exit 0;    } else if ($1 == start_ tablename) {        in_table = 1;    } else if ($1 == tablename) {        count = split($0, columns);    }    next;}in_table {    for (i = 2; i <= NF; i++) {        values[i] = values[i] , $i;    }}END {    for (i = 2; i <= count; i++) {        if (columns[i]) {            print columns[i]  -  substr(values[i], 2);        }    }}Call it like this:awk -f config.awk -v tablename=interfaces_setup config.csv