Given a text file file.txt
, transpose its content.
You may assume that each row has the same number of columns and each field is separated by the ' '
character.
For example, if file.txt
has the following content:
name age alice 21 ryan 30
Output the following:
name alice ryan age 21 30
利用awk语句,向c语言类似,其中awk的语法如下:
awk '' file #说明:''中的就是处理语句
BEGIN {
#执行之前的操作,一般是赋值#
}
{
#中间的是对每一行的操作#
}
END{
#处理完后的操作,一般是格式化输出#
}
解法:用一个数组s,里面有NF个元素,其中NF是当前记录的总字段数。对于第一个记录,直接存到相应的s[i]中,后面的记录一一累加,
达到转置的目的。最后s[i]对应原文件一列的内容。
awk '{ for(i=1; i<=NF; i++) if(NR==1) s[i]=$i; else s[i]=s[i]" "$i; } END { for(i=1; i<=NF; i++) print s[i]; }' file.txt