正規表現で変換する必要があるデータ ファイルがあります。より具体的には、最初の 6 列を同じに維持し、7 列目以降は奇数列のみを選択し、連続する行の各ペアのフィールドをまとめる必要があります。少し複雑に聞こえるかもしれませんので、例を挙げて説明します。これは私の元のデータ ファイルです (任意の数の列を持つことができます)。
A B C D E F 11 12 13 14 15 16 17 18
A B C D E F 21 22 23 24 25 26 27 28
A B C D E F 31 31 33 34 35 36 37 38
A B C D E F 41 42 43 44 45 46 47 48
A B C D E F 51 52 53 54 55 56 57 58
A B C D E F 61 62 63 64 65 66 67 68
A B C D E F 71 72 73 74 75 76 77 78
A B C D E F 81 82 83 84 85 86 87 88
最初の6列を維持してから、奇数列を削除できることがわかりました
awk '{for (i = 1; i <= NF; i++) if (i < 7 || i % 2 == 1) printf $i OFS}; {print ""}
これが結果です:
A B C D E F 11 13 15 17
A B C D E F 21 23 25 27
A B C D E F 31 33 35 37
A B C D E F 41 43 45 47
A B C D E F 51 53 55 57
A B C D E F 61 63 65 67
A B C D E F 71 73 75 77
A B C D E F 81 83 85 87
しかしその後、次のように、連続する行の各ペアのフィールドをまとめる必要があります。
A B C D E F 11 21 13 23 15 25 17 27
A B C D E F 31 41 33 43 35 45 37 47
A B C D E F 51 61 53 63 55 65 57 67
A B C D E F 71 81 73 83 75 85 77 87
私のデータファイルは巨大で効率的に変換する必要があるため、sedまたはawkを使用してプロセス全体を作成することを考えていましたが、2番目の変換も行う方法がわかりませんでした。どんな助けでも大歓迎です。