私の入力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 }