ファイル構造を維持しながらx-end列を乗算する

ファイル構造を維持しながらx-end列を乗算する

私の入力File1は次のようになります。

A,22,1,2,3,4,5
G,26,5,6,7
X,28,10,20,10

ファイル構造を維持しながら、3列に数式を適用したいと思います。たとえば、方程式に2を掛けたい場合は、出力を見つけます。

A,22,2,4,6,8,10
G,26,10,12,14
X,28,20,40,20

これを行うには、次のコマンドを試しました。

awk -F ',' '{for(i=1; i<=NF; i++) if (i >= 3)
     print 2*$i
  else
    print $i }' File1

これは正しい出力を提供しますが、すべてのファイル構造を削除します。私が使用したい実際の方程式を使用する場合:2 *(2 *($ i-1)+ 1)

ソリューションに付属の説明はまだ非常に慣れていないので、非常に感謝します!

ベストアンサー1

OFSたとえば、出力フィールド区切り記号()のみを設定できます。

awk '{ for (i=3; i<=NF; i++) $i*=2 } 1' FS=, OFS=, infile

または、次の式を使用してください。

awk '{ for (i=3; i<=NF; i++) $i = 2*(2*($i-1)+1) } 1' FS=, OFS=, infile

出力:

A,22,2,4,6,8,10
G,26,10,12,14
X,28,20,40,20

スクリプトの最後には、1次の略語があります。{ print $0 }

おすすめ記事