Shell-Script

剪切和轉置文件的某些行

  • January 27, 2022

我有 1344 行數據列。我想從我的輸入數據文件中形成 32 行 x 42 列。我想剪切前 42 行並粘貼到 42 列數據中的一個原始數據,然後同樣繼續向下。我的數據排列為

文件名:data.txt

1
2
3
.
.
.
1344

我希望結果是 output.txt

1 2 3 ....42
43 44      84
.
.
.
1303 1304 . . . 1344

我希望你幫我寫一個可以做到的腳本。

這些應該工作:

awk '{if(n==41){n=0;print $0}else{printf "%s ",$0;n++}}' data.txt 

或者

awk '{if(NR % 42 == 0){print;}else{printf "%s ",$0}}' data.txt

或者

perl -ne 'if($. % 42){chomp; print "$_ "}else{ print;}' data.txt 

或者

perl -pne 's/\n/ / if $. % 42' data.txt

最簡單的方法是使用rs命令 - 如果可用:

< original.file rs 0 42 > reshaped.file

引用自:https://unix.stackexchange.com/questions/107442