awkにコマンドがあります。awk -F, '{$1=sprintf("%.2f",$1*value)}1' value=$VALUE OFS=, input.txt
入力ファイルの最初の列を掛けます。
2097160 /home/x/a/c/2GB/
102408 /home/y/b/d/100MB/
...
出力は次のとおりです
0.66
0.03
...
私が望むのは、上記の出力をタブで区切ってドル記号で始まる別のファイルの最後の列として追加して、次のように$
見えることです。
2.1G /home/x/a/c/2GB/ $0.66
101M /home/y/b/d/100MB/ $0.03
...
複数のファイルなどを作成せずにどのようにこれを行うことができますか?
ベストアンサー1
入力として使用するために、次のファイルを作成しました。
$ cat file1
2097160 /home/x/a/c/2GB/
102408 /home/y/b/d/100MB/
$ cat file1
2097160 /home/x/a/c/2GB/
102408 /home/y/b/d/100MB/
次に、両方のファイルを読み取ることができるようにスクリプトを変更し、最初のファイルを読み取ると(現在のファイルのレコード番号FNRは入力レコード番号NRと同じです)、乗算結果をインデックス配列に保存します。パス別:
$ awk '(NR==FNR){a[$2]=sprintf("%.2f",$1*value); next} {print $1,$2,a[$2]}' OFS="\t" value=0.000000315 file1 file2
2.1G /home/x/a/c/2GB/ 0.66
101M /home/y/b/d/100MB/ 0.03