【发布时间】:2014-12-14 04:08:51
【问题描述】:
在 type 为 "" 的情况下,不按顺序打印第 3 个字段,然后打印除第 3 个字段之外的整行。
给定一个制表符分隔行a b c d e 的想法是打印ab<tab>c<tab>a<tab>b<tab>d<tab>e
设置$3="" 似乎会导致后面的打印语句丢失制表符字段分隔符,所以不好。
# $1 = year $2 = movie
BEGIN {FS = "\t"}
type=="" {printf "%s\t%s\t", $2 $1,$3; $3=""; print}
type!="" {printf "%s\t<%s>\t", $2 $1,type; print}
END {print ""}
坚持一个我不太喜欢的 for 循环,因为解决方案会导致一个空白文件。
# $1 = year $2 = movie
BEGIN {FS = "\t"}
type=="" {printf "%s\t%s\t%s\t%s\t", $2 $1,$3,$1,$2; for (i=4; i<=NF;i++) printf "%s\t",$i}
type!="" {printf "%s\t<%s>\t", $2 $1,type; print}
END {print ""}
【问题讨论】:
标签: awk