web-dev-qa-db-ja.com

awkで2つの列を乗算する方法は?

入力ファイルで列1と列2(ファイルの終わりまで)を乗算し、1列と3列を乗算して別のファイルに出力する必要があります。

input.txt:

1 677679866
2 121867616
3 49413198
4 40415982

output.txt:

1 677679866
2 243735232
3 148239594
4 161663928
8
jack
awk '{ print $1, $1 * $2 }' input.txt > output.txt
15
jasonwryan

これがawkソリューションです:

$ awk '$0=$1" "$1*$2' input.txt 
1 677679866
2 243735232
3 148239594
4 161663928

しかし、あなたはそれを多くの方法で行うことができます、これがPerlソリューションです:

$ Perl -ape 's/$F[1]/$F[0]*$F[1]/e' input.txt
1 677679866
2 243735232
3 148239594
4 161663928

-iオプションを使用して、変更をインプレースで行うことができます。

$ Perl -i.bak -ape 's/$F[1]/$F[0]*$F[1]/e' input.txt
4
cuonglm