【发布时间】:2017-03-16 20:17:36
【问题描述】:
我有一个包含如下条目的文件:
root:x:0::192.168.164.164
bin:x:1:bin,daemon:192.168.164.164
daemon:x:2:bin,daemon:192.168.164.164
test:x:501:test1,test2,test3,test4:192.168.164.160
test5:x:502::192.168.164.160
我一直在寻找可以将此文件转换为的 UNIX bash/shell 脚本的方法:
root;0;;192.168.164.164
bin;1;bin;192.168.164.164
bin;1;daemon;192.168.164.164
daemon;2;bin;192.168.164.164
daemon;2;daemon;192.168.164.164
test;501;test1;192.168.164.160
test;501;test2;192.168.164.160
test;501;test3;192.168.164.160
test;501;test4;192.168.164.160
test5;502;;192.168.164.160
【问题讨论】:
-
看起来像一个微不足道的
awk命令。使用:作为输入字段分隔符,;作为输出字段分隔符,然后打印你想要的字段。 -
啊,比这稍微复杂一点。当字段 4 包含逗号时,您需要将其拆分,然后为该数组的每个元素重复打印。
-
所以
test:x:501:test1,test2,test3,test4:192.168.164.160这一行应该转换成test;501;test1;192.168.164.160 test;501;test2;192.168.164.160 test;501;test3;192.168.164.160 test;501;test4;192.168.164.160吧? -
你有尝试过什么吗?到目前为止发布您的尝试会有所帮助,而不是指望其他人为您解决整个问题。
-
我试过这个 - 但似乎缺少一些东西 awk -F '[:,]' '{for(i=5;i