-1

我有大的文本文件有多个列,我想对应用算术转换,使用column6column12中的变量。在文本文件列bash上应用算术转换

变换将是如下:

column11=column11*1000.*column12./(8.314*(column6+273.15)) 

其中.*./分别表示各行中的值的的elementwise乘法和除法。

这里是输入文本文件是什么样子的样本:

"2015-11-11 00:00:00.00",59841,0.327,3.275,1.89275,32.048,9,2435.477,2308.886,15.03365,31.2365067891251,98.7333,253 
"2015-11-11 00:00:00.10",59842,0.086,3.56975,2.20325,32.10205,10,2433.668,2298.364,15.03292,31.2299567962211,98.7473,253 
"2015-11-11 00:00:00.20",59843,0.26575,3.343,1.8285,32.06717,11,2433.833,2294.418,15.03119,31.2436473758837,98.72864,253 
"2015-11-11 00:00:00.30",59844,-0.1915,3.28175,1.793,32.12122,12,2433.668,2280.608,15.02593,31.2410875853554,98.7333,253 
"2015-11-11 00:00:00.40",59845,-0.20375,3.447,2.0135,32.08286,13,2433.833,2276.991,15.02812,31.2245602421307,98.73796,253 

理想的情况下,其结果将被保存到相同的文件和进程将通过遍历n文件重复。

一个解决方案或awk,cut/paste或只是bash的一些想法会有很大的帮助。

+2

什么是你的数学表达式的两个点的主循环? – Cyrus

+0

删除点,将“column”替换为“$”并运行awk -F,{...} 1'file> outputfile',其中'...'是替换后的代码。 – karakfa

+0

查看任何awk手册页或任何搜索结果的例子都可以回答这个问题。付出一点努力。 –

回答

-1

你可以写不阵列

for f in path/to/files/*.csv 
do 
    awk -F, '...' "$f" > "processed_$f" 
done