我正在尝试用一个awk命令来完成以下操作。
我有一个文本文件,其结构如下:
文件字段描述(不在文件中)
首个字段以“:”分隔,最后一个字段(主机列表)以空格分隔 唯一标识符:名称:唯一标识符:主机列表(可能为空,可能重复出现)
需要将这个输入转换为这个输出
使用下一个命令是有效的,但我不喜欢一直使用管道符。
文件字段描述(不在文件中)
首个字段以“:”分隔,最后一个字段(主机列表)以空格分隔 唯一标识符:名称:唯一标识符:主机列表(可能为空,可能重复出现)
sv_0:blabla:205700DD4C506261796ED3:Host_10 Host_1 Host_16
sv_111:abcd:205700DD4C50629585735C:Host_10
sv_3:xpto1:2057008E714F629B3BCDCF:Host_11 Host_10
sv_46:something:205700DD4C50629E5AB93A:
需要将这个输入转换为这个输出
sv_0 blabla 205700DD4C506261796ED3 Host_10
sv_0 blabla 205700DD4C506261796ED3 Host_1
sv_0 blabla 205700DD4C506261796ED3 Host_16
sv_111 abcd 205700DD4C50629585735C Host_10
sv_3 xpto1 2057008E714F629B3BCDCF Host_11
sv_3 xpto1 2057008E714F629B3BCDCF Host_10
sv_46 something 205700DD4C50629E5AB93A
使用下一个命令是有效的,但我不喜欢一直使用管道符。
awk -F: '{print $1" "$2" "$3" "$4 }' file.txt | awk '{nfield=4; while (NF >= nfield) {print $1" "$2" "$3" "$nfield; nfield++}}'