Shell-Script
將行轉置為列的 shell 或 python 腳本
我有一個大文件,其中包含如下數字:
1 2 3 4 5 6 7 8 9 9 9 9
我想把它轉換成
1 5 9 2 6 9 3 7 9 4 8 9
我在Google上搜尋解決方案,但這些解決方案在我的情況下根本不起作用。
該解決方案應該適合您。
awk ' { for (i=1; i<=NF; i++) { a[NR,i] = $i } } NF>p { p = NF } END { for(j=1; j<=p; j++) { str=a[1,j] for(i=2; i<=NR; i++){ str=str" "a[i,j]; } print str } }' file
測試
cat file 1 2 3 4 5 6 7 8 9 0 1 11
執行上述命令後,輸出為,
1 5 9 2 6 0 3 7 1 4 8 11
參考
https://stackoverflow.com/questions/1729824/transpose-a-file-in-bash
如果你可以使用
perl
:$ perl -anle ' $l[$_] .= $F[$_] for 0..$#F; END { print join " ", split // for @l; }' file 1 5 9 2 6 9 3 7 9 4 8 9
或使用
unpack
:$ perl -nle ' $i = 0; $l[$i++] .= $_ for unpack "(A2)*"; END { print join " ", split // for @l; }' file 1 5 9 2 6 9 3 7 9 4 8 9