我有一个CSV文件,我想从中提取一些信息:对于一个列中的每个不同值,我想计算另一列中相应值的总和.最终,我可以用Python做,但我相信可以使用简单的解决方案awk.
这可能是CSV文件:
2 1:2010-1-bla:bla 1.6
2 2:2010-1-bla:bla 1.1
2 2:2010-1-bla:bla 3.4
2 3:2010-1-bla:bla -1.3
2 3:2010-1-bla:bla 6.0
2 3:2010-1-bla:bla 1.1
2 4:2010-1-bla:bla -1.0
2 5:2010-1-bla:bla 10.9
Run Code Online (Sandbox Code Playgroud)
我想得到:
1 1.6
2 4.5
3 5.8
4 -1.0
5 10.9
Run Code Online (Sandbox Code Playgroud)
现在,我只能提取:
a)第一列的值:
awk -F ' ' '{print $(2)}' MyFile.csv | awk -F ':' '{print $(1)}'
Run Code Online (Sandbox Code Playgroud)
然后得到:
1
2
2
3
3
3
4
5
Run Code Online (Sandbox Code Playgroud)
b)和值相等,例如,1.1在最后一栏中:
awk -F ' ' '{print $(NF)}' MyFile.csv | awk '$1 == 1.1'
然后得到:
1.1
1.1
Run Code Online (Sandbox Code Playgroud)
我无法同时提取我感兴趣的列,这可能最终帮助我.这是一个示例输出,可以简化总和的计算(我不知道):
1 1.6
2 1.1
2 3.4
3 -1.3
3 6.0
3 1.1
4 -1.0
5 10.9
Run Code Online (Sandbox Code Playgroud)
编辑:感谢Elenaher,我们可以说输入是上面的文件.
gho*_*g74 12
$ awk -F"[: \t]+" '{a[$2]+=$NF}END{for(i in a ) print i,a[i] }' file
4 -1
5 10.9
1 1.6
2 4.5
3 5.8
Run Code Online (Sandbox Code Playgroud)