如何编写bash脚本动态打印行和列数据并更新同一文件中的相同数据?

如何编写bash脚本动态打印行和列数据并更新同一文件中的相同数据?

abc_hosts,pwd_host_id,pwd_host_id,主机名,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,3232321312312 end_hosts,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,, abc_hosts,pwd_host_id,pwd_host_id,主机名,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,3232321312312 end_hosts2,,,,,,,,,,,,,,,,,,,,

答案1

这个awk脚本应该可以帮助您开始:

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);
        }
    }
}

像这样称呼它:

awk -f config.awk -v tablename=interfaces_setup config.csv

相关内容