Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对文本文件列bash应用算术转换_Bash_Recursion_Awk_Calculated Columns_Arithmetic Expressions - Fatal编程技术网

对文本文件列bash应用算术转换

对文本文件列bash应用算术转换,bash,recursion,awk,calculated-columns,arithmetic-expressions,Bash,Recursion,Awk,Calculated Columns,Arithmetic Expressions,我有多个列的大型csv文本文件,我想使用column6和column12中的变量对column11进行算术转换 转变如下: column11=column11*1000.*column12./(8.314*(column6+273.15)) 其中,*和/分别表示每行值的元素乘法和除法 以下是输入文本文件的示例: "2015-11-11 00:00:00.00",59841,0.327,3.275,1.89275,32.048,9,2435.477,2308.886,15.03365,31.23

我有多个列的大型
csv
文本文件,我想使用
column6
column12
中的变量对
column11
进行算术转换

转变如下:

column11=column11*1000.*column12./(8.314*(column6+273.15))
其中,
*
/
分别表示每行值的元素乘法和除法

以下是输入文本文件的示例:

"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
中找到一个解决方案或一些想法将非常有帮助。

您可以编写不带数组的主循环

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

数学表达式中的两个点是什么?删除这些点,将“column”替换为“$”,然后运行
awk-F,{…}1'file>outputfile
,其中
是替换后的代码。只要看一眼任何awk手册页或谷歌搜索的示例,就可以回答这个问题。给我一点点努力。@karakfa谢谢。它起作用了:a_files=(path/to/files/*.csv)for((i=0;i filenew“$i”.csv done将接受它,如果您将其移动到“答案”部分。查找awk的FILENAME属性/变量,您可以在不使用bash的情况下执行此操作