Unix 使用分隔符格式化最后一列:
我有一个awk命令Unix 使用分隔符格式化最后一列:,unix,awk,scripting,Unix,Awk,Scripting,我有一个awk命令 awk '{printf "%-11s %-24s %-16s %-1s %-6s %-1s %-1s %-7s %-1s %-1s\n", $1, $2, $3,$4,$5,$6,$7,$8,$9,$10}' fhost2 那个输出这个 GBL-SVC-ES1 GBL-esx403.ad.gbl.com 10008C7CFF652604 1 Module 7 1 FC_Port 7 1 GBL-SVC-ES1 GBL-esx403.ad.gbl.com 10008C7CF
awk '{printf "%-11s %-24s %-16s %-1s %-6s %-1s %-1s %-7s %-1s %-1s\n", $1, $2, $3,$4,$5,$6,$7,$8,$9,$10}' fhost2
那个输出这个
GBL-SVC-ES1 GBL-esx403.ad.gbl.com 10008C7CFF652604 1 Module 7 1 FC_Port 7 1
GBL-SVC-ES1 GBL-esx403.ad.gbl.com 10008C7CFF652604 1 Module 8 1 FC_Port 8 1
GBL-SVC-ES1 GBL-esx403.ad.gbl.com 10008C7CFF652604 1 Module 9 1 FC_Port 9 1
GBL-SVC-ES1 GBL-esx403.ad.gbl.com 10008C7CFF20D0A8 1 Module 7 1 FC_Port 7 3
如何使此输出看起来像这样
GBL-SVC-ES1 GBL-esx403.ad.gbl.com 10008C7CFF652604 1:Module:7 1:FC_Port:7:1
GBL-SVC-ES1 GBL-esx403.ad.gbl.com 10008C7CFF652604 1:Module:8 1:FC_Port:8:1
GBL-SVC-ES1 GBL-esx403.ad.gbl.com 10008C7CFF652604 1:Module:9 1:FC_Port:9:1
GBL-SVC-ES1 GBL-esx403.ad.gbl.com 10008C7CFF20D0A8 1:Module:7 1:FC_Port:7:3
非常感谢您的帮助。比您的代码更灵活的东西(如果字段数量增加,代码将变得巨大):
awk'
开始{
nCol=拆分(“45 7 8 9”,chgSepCol)
对于(i=1;i是否在需要时在printf
命令中使用冒号而不是空格?
awk '
BEGIN{
nCol = split("4 5 7 8 9", chgSepCol)
for(i=1; i<=nCol; i++){
chgSep[chgSepCol[i]]
}
}
{
for(i=1; i<NF; i++){
sep = (i in chgSep)? ":" : OFS
printf "%s%s", $i, sep
}
print $NF
}' file