给定一个文件 file.txt,转置它的内容。
你可以假设每行列数相同,并且每个字段由 ‘ ‘ 分隔.
示例:
假设 file.txt 文件内容如下:
name age
alice 21
ryan 30
应当输出:
name alice ryan
age 21 30
1 | cat file.txt | awk '{for(i=1;i<=NF;i++){if(NR==1){res[i]=$i}else{res[i]=res[i]" "$i}}}END{for(i=1;i<=NF;i++){print res[i]}}' |
awk是一行一行处理数据,if(NR==1){res[i]=$i}优先初始化第一行的res[]数组,长度为第一行的元素格式,后面每行在对应位置元素后面追加。