我有一個類似于下面的資料集:
37 151 36 34 40 56 59 42 28 38 60
1 11 0 0 2 2 3 4 0 0 4
35 158 35 37 40 56 58 48 31 40 72
1 2 1 1 0 0 0 0 1 0 0
32 132 32 30 36 57 53 35 25 34 54
8 36 4 8 8 7 13 13 3 6 14
40 162 36 38 41 66 64 46 27 35 60
0 2 0 0 1 0 0 0 1 1 2
32 151 31 34 41 58 66 45 33 40 66
0 5 3 2 1 2 0 1 1 4 6
我想將偶數行轉換為偶數列,如下所示:
37 1 151 11 36 0 34 0 40 2 56 2 59 3 42 4 28 0 38 0 60 4
35 1 158 2 35 1 37 1 40 0 56 0 58 0 48 0 31 1 40 0 72 0
32 8 132 36 32 4 30 8 36 8 57 7 53 13 35 13 25 3 34 6 54 14
40 0 162 2 36 0 38 0 41 1 66 0 64 0 46 0 27 1 35 1 60 2
32 0 151 5 31 3 34 2 41 1 58 2 66 0 45 1 33 1 40 4 66 6
基本上,我想取偶數行并將它們轉換為偶數列,同時保留奇數行和奇數列的原樣。
uj5u.com熱心網友回復:
您可以awk通過將奇數行的每個欄位保存在一個陣列中,然后在每個偶數行的元素之間列印每個陣列元素,以直接的方式來完成,例如
awk '
FNR%2{for(i=1;i<=NF;i )a[i]=$i; next}
{for(i=1;i<=NF;i ) printf " = =", a[i],$i; print ""}
' file
其中記錄號(行)的模FNR被用來確定奇數/偶數和奇數,欄位存盤在a[]陣列中,然后列印下一行(偶數),其中每個欄位列印在a[].
示例使用/輸出
您可以根據需要調整輸出間距。有了你的資料,file你會得到:
$ awk '
> FNR%2{for(i=1;i<=NF;i )a[i]=$i; next}
> {for(i=1;i<=NF;i ) printf " = =", a[i],$i; print ""}
> ' file
37 1 151 11 36 0 34 0 40 2 56 2 59 3 42 4 28 0 38 0 60 4
35 1 158 2 35 1 37 1 40 0 56 0 58 0 48 0 31 1 40 0 72 0
32 8 132 36 32 4 30 8 36 8 57 7 53 13 35 13 25 3 34 6 54 14
40 0 162 2 36 0 38 0 41 1 66 0 64 0 46 0 27 1 35 1 60 2
32 0 151 5 31 3 34 2 41 1 58 2 66 0 45 1 33 1 40 4 66 6
沒有均勻的輸出間距:
$ awk '
FNR%2{for(i=1;i<=NF;i )a[i]=$i; next}
{for(i=1;i<=NF;i ) printf " %d %d", a[i],$i; print ""}
' file
37 1 151 11 36 0 34 0 40 2 56 2 59 3 42 4 28 0 38 0 60 4
35 1 158 2 35 1 37 1 40 0 56 0 58 0 48 0 31 1 40 0 72 0
32 8 132 36 32 4 30 8 36 8 57 7 53 13 35 13 25 3 34 6 54 14
40 0 162 2 36 0 38 0 41 1 66 0 64 0 46 0 27 1 35 1 60 2
32 0 151 5 31 3 34 2 41 1 58 2 66 0 45 1 33 1 40 4 66 6
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/360742.html
上一篇:在Linux中生成000001到999999的6位數字
下一篇:從遠程服務器獲取多個最新檔案
