如何根据CSV列内容创建文件并写入指定列数据?
按CSV列内容生成对应文件的解决方案
问题场景
有一个名为xyz.csv的CSV文件,字段分隔符为分号;,包含HOSTNAME(主机名)、IP(IP地址)和GW(网关)三列,示例内容如下:
HOSTNAME;IP;GW device1;ip1;gw1 device2;ip2;gw2
需求:以每行HOSTNAME列的内容作为文件名创建文件,并将对应行的IP和GW列内容按顺序写入文件(先IP后GW,各占一行)。预期效果:
cat device1 ip1 gw1 cat device2 ip2 gw2
解决方案
使用awk命令可直接完成该需求,命令如下:
awk -F ';' 'NR>1 {print $2 > $1; print $3 > $1; close($1)}' xyz.csv
命令说明
-F ';':指定CSV的字段分隔符为分号;NR>1:跳过第一行表头内容print $2 > $1:将第二列(IP地址)写入以第一列(主机名)命名的文件print $3 > $1:将第三列(网关)追加写入同一个文件close($1):完成单个文件写入后关闭文件句柄,避免因打开过多文件导致异常
验证效果
执行命令后,查看生成的文件内容:
cat device1
输出:
ip1 gw1
cat device2
输出:
ip2 gw2
内容的提问来源于stack exchange,提问作者Tom
相关产品推荐
相关产品推荐

