在列中添加连续条目
Add consecutive entries in a column
我有一个格式为的文件
0.99987799 17743.000
1.9996300 75.000000
2.9993899 75.000000
3.9991500 102.00000
4.9988999 131.00000
5.9986601 130.00000
6.9984102 152.00000
7.9981699 211.00000
8.9979200 256.00000
9.9976797 259.00000
10.997400 341.00000
11.997200 373.00000
我想做的是在第二列中每隔四行添加一次数据。因此,所需的输出将是
1 17743+75+75+102
2 131+130+52+211
3 256+259+341+373
这怎么可能在awk中完成?
我知道我可以使用在文件中找到特定的元素
awk 'FNR == 5 {print $2}' file
但我不知道如何在一行中添加4个元素。例如,如果我尝试
awk '$2 {print FNR == 5}' file
我只得到零,所以我不知道如何先解析列,然后再解析行。我也试过
awk 'BEGIN{i=4}
{
for (NR>=1 || NR<=i)
{
print $2
}
}' filename
但是我在CCD_ 1处得到语法错误。我也不知道如何在整个文件上循环。欢迎任何帮助或想法!或者,也许在C++
中这样做会更好吗?我不知道哪个更方便。。。
我也试过
awk 'BEGIN{sum=0} {{sum += $2} if(FNR%4 == 0) { print sum; sum=0}}' infile.dat
但它似乎不能正常工作。。。
awk 'NR%4==1{sum=$2; next}{sum+=$2} NR%4==0{print ++j,sum;}' input.txt
输出:
1 17995
2 624
3 1229
对于组的第一个数,它将第二列的值存储在$2
中,对于接下来的3行,将第二行的值和sum
相加。对于组的最后一行,CCD_ 5打印结果。
如果在求和结果之前不需要行号,只需删除++j,
即可。
awk '{print $2}' file | paste -d+ - - - - | bc
这对我来说很好:
awk '{sum += $2}
FNR%4==0 {print FNR/4, sum; sum = 0}
END {if(FNR%4){print int(FNR/4)+1, sum}}' awktest.txt
结果为:
1 17995
2 624
3 1229
相关文章:
- 将成员变量添加到共享库中的类中,不会破坏二进制兼容性吗
- 如何在C++中从两个单独的for循环中添加两个数组
- POCO::PostgreSQL:如何将std::vector支持添加到`Binder::bind`
- 如何仅为一个函数添加延迟
- 模板元程序查找相似的连续类型名称
- 如何防止 c++ 在从浮点型转换为双精度型(不适用于 IO)时添加额外的小数?
- 使用std::transform将一个范围的元素添加到另一个范围中
- 如何将更多文件夹添加到c++include路径
- 如何将元素添加到数组的线程安全函数?
- QT通过C++添加映射QML项目
- 如何将点击的信号和插槽添加到qt中的自定义按钮中
- 如何使用重载的相等(==)运算符向测试用例添加描述
- 为什么Mat类的两个对象可以在不重载运算符+的情况下添加
- 如何防止clang格式在流运算符调用之间添加换行符<<
- 通过在带有 C++ 的列表中添加连续元素来计算新的整数列表
- 在C 中添加连续的向量元素组的最快方法
- 如何将连续的内存块(动态地)添加到先前分配的动态内存中
- 在列中添加连续条目
- C++中的位集,关于连续添加
- 从输入中添加连续整数(从 Python 转换为 C++)