题目描述:给定一个文件 file.txt
,转置它的内容。你可以假设每行列数相同,并且每个字段由 ' '
分隔.
示例:
假设
file.txt
文件内容如下:name age alice 21 ryan 30应当输出:
name alice ryan age 21 30
解法1。awk的C语言风格写法,注意格式
awk '
# 这一部分是循环体,对每一行都执行一次for loop
{
for(i = 1; i <= NF; ++i)
{
if(NR == 1) s[i] = $i; # 若是第一行,就用第一行初始化第一列,因为新文件有多少个字段就有多少行
else s[i] = s[i] " " $i; # 其他行的话,因为已经有第一列了,所以每行第一个元素已就位,当前遍历的元素就在添加在相应行的首个元素后面
}
}
END { # END在遍历完文件后,只执行一次
for(i = 1; s[i] != ""; ++i)
{
print s[i];
}
}' file.txt