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第一次嘗試:
1
2
3
4
5
6
7
8
|
# Read from the file file.txt and print its transposed content to stdout. n=`awk '{print NF}' file.txt | head -n1` for ((i=1;i<= $n ;i++)) do a=` echo $i `; awk '{print $' $a '}' file.txt | tr '\n' ' ' ; printf "\012" ; done |
1
2
3
4
5
6
7
8
|
cat file.txt | awk '{ for (i=1;i<=NF;++i) { arr[i] = arr[i] $i " " ; } } END { for (i=1;i<=NF;++i) print substr (arr[i], 0, length(arr[i])-1) }' |
arr[i] = arr[i]
$i
" "
;
表示awk命令對第n行逐行讀入,
假設第n行爲:aa-
第一行 aa空格 第二行 aa空格bb空格 第三行 aa空格bb空格cc空格
arr[i] = arr[i]
$i
" "
;的
最終結果爲arr[i]=aa空格bb空格cc空格substr
(arr[i], 0, length(arr[i])-1)。