题目
给定一个文件 file.txt,转置它的内容。
你可以假设每行列数相同,并且每个字段由 ' ' 分隔。
示例:
假设 file.txt 文件内容如下:
name age
alice 21
ryan 30
应当输出:
name alice ryan
age 21 30
解题
思路:
- 利用awk记录二维表,在END部分做转置
- %s,表示一个字符串
代码:
# Read from the file file.txt and print its transposed content to stdout.
awk '{
for (i = 1; i <= NF; i++) {
a[i,NR] = $i
}
}
END {
for (i = 1; i <= NF; i++) {
for (j = 1; j <= NR; j++) {
printf "%s", a[i,j]
if (j < NR) {
printf " "
}
}
if (i < NF) {
print ""
}
}
}' \
file.txt