awk '{
for (i = 1; i <= NF; ++i) {
if (NR == 1) s[i] = $i;
else s[i] = s[i] " " $i;
}
} END {
for (i = 1; s[i] != ""; ++i) {
print s[i];
}
}' file.txt
解析:
NR是awk命令的内建变量,表示已经读出的记录数,就是行号,从1开始。
NF:number of fields,也就是当前这一行数据中字段的个数;
使用awk像数组一样处理文本,NF显示每行的字段数(列数),NR(显示行数,从1开始)
awk中的for,if,else等语句是从C语言中借鉴来的,行遍历:
for(i=1;i<=NF;i++) a[i]=$i;