使用 AWK 通过多个输入汇总列
Summarize a column by several inputs using AWK
我在unix txt文件上有数十亿行的大数据。我需要为我的C++开发人员提供一个规范和一个摘要示例。
我需要总结以下格式:
原始数据表示例
Column1 Column2 Column3 Column4 Column5 Column6 Column7 Column8 Column9 Column10 Column11 Column12 Column13 Column14 Column15 Column16 Column17 Column18
Ax1,Ay1 Bx1,By1 C1 D1 E1 F1 G1 H1 Ix1,Iy1 Jx1,Jy1 K1 L1 M1 N1 O1 P1 Ix1,Iy1 Jx1,Jy1
Ax2,Ay2 Bx2,By2 C1 D1 E1 F1 G1 H1 Ix1,Iy1 Jx1,Jy1 K1 L1 M1 N1 O1 P1 Ix1,Iy1 Jx1,Jy1
Ax2,Ay3 Bx2,By3 C3 D3 E3 F3 G3 H1 Ix1,Iy1 Jx1,Jy1 K3 L3 M3 N3 O3 P3 Qx3,Qy3 Rx3,Ry3
Ax4,Ay4 Bx4,By4 C4 D4 E4 F4 G4 H4 Ix4,Iy4 Jx1,Jy4 K4 L4 M4 N4 O4 P4 Qx4,Qy4 Rx4,Ry4
Ax5,Ay5 Bx5,By5 C5 D5 E5 F5 G5 H5 Ix5,Iy5 Jx1,Jy5 K5 L5 M5 N5 O5 H5 Ix5,Iy5 Jx1,Jy5
Ax6,Ay6 Bx6,By6 C2 D2 E3 F3 G3 H3 Ix3,Iy3 Jx1,Jy3 K2 L2 M3 N3 O3 P3 Ix3,Iy3 Jx1,Jy3
Ax7,Ay7 Bx7,By7 C7 D7 E3 F3 G3 H3 Ix3,Iy3 Jx1,Jy3 K7 L7 M3 N3 O3 P3 Ix3,Iy3 Jx1,Jy3
Ax8,Ay8 Bx8,By8 C8 D8 E8 F8 G8 H3 Ix3,Iy3 Jx1,Jy3 K8 L8 M8 N8 O8 P3 Ix3,Iy3 Jx1,Jy3
Ax9,Ay9 Bx9,By9 C9 D9 E9 F9 G9 H9 Ix9,Iy9 Jx1,Jy9 K9 L9 M9 N9 O9 P9 Qx9,Qy9 Rx9,Ry9
Ax10,Ay10 Bx10,By10 C10 D10 E10 F10 G10 H10 Ix10,Iy10 Jx1,Jy10 K10 L10 M10 N10 O10 P10 Qx10,Qy10 Rx10,Ry10
我想将第8列的计数数总结为9、10、16、17和18。
并获取格式。
预期结果
Count Column8 Column9 Column10 Column16 Column17 Column18
2 H1 Ix1,Iy1 Jx1,Jy1 P1 Ix1,Iy1 Jx1,Jy1
1 H1 Ix1,Iy1 Jx1,Jy1 P3 Qx3,Qy3 Rx3,Ry3
1 H4 Ix4,Iy4 Jx1,Jy4 P4 Qx4,Qy4 Rx4,Ry4
1 H5 Ix5,Iy5 Jx1,Jy5 H5 Ix5,Iy5 Jx1,Jy5
3 H3 Ix3,Iy3 Jx1,Jy3 P3 Ix3,Iy3 Jx1,Jy3
1 H9 Ix9,Iy9 Jx1,Jy9 P9 Qx9,Qy9 Rx9,Ry9
1 H10 Ix10,Iy10 Jx1,Jy10 P10 Qx10,Qy10 Rx10,Ry10
人们告诉我,正确的方法是使用AWK。有什么建议吗?有更快的选择吗? 我一直在谷歌上搜索这个,但是,我在AWK上没有发现这那么简单。让我知道。谢谢
awk 'NR!=1{uniqueSet[$8" "$9" "$10" "$16" "$17" "$18]++}END{print "Count Column8 Column9 Column10 Column16 Column17 Column18"; for(i in uniqueSet) print uniqueSet[i]" "i}' <file_name>
首先,awk 将遍历每一行并根据您的"键"计算行的迭代次数,最后它将使用"键"打印计数
输出
Count Column8 Column9 Column10 Column16 Column17 Column18
1 H4 Ix4,Iy4 Jx1,Jy4 P4 Qx4,Qy4 Rx4,Ry4
3 H3 Ix3,Iy3 Jx1,Jy3 P3 Ix3,Iy3 Jx1,Jy3
1 H10 Ix10,Iy10 Jx1,Jy10 P10 Qx10,Qy10 Rx10,Ry10
1 H1 Ix1,Iy1 Jx1,Jy1 P3 Qx3,Qy3 Rx3,Ry3
2 H1 Ix1,Iy1 Jx1,Jy1 P1 Ix1,Iy1 Jx1,Jy1
1 H9 Ix9,Iy9 Jx1,Jy9 P9 Qx9,Qy9 Rx9,Ry9
1 H5 Ix5,Iy5 Jx1,Jy5 H5 Ix5,Iy5 Jx1,Jy5
相关文章:
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 2D数组来自文本输入,中间有空格
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 检查输入是否不是整数或数字
- 正在尝试了解输入验证循环
- 读取文件并输入到矢量中
- C++如何通过用户输入删除列表元素
- 用c++从输入文件中读取另一行
- 读取文件的最后一行并输入到链接列表时出错
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 如何使用用户输入在C++中正确填充2D数组
- C++MySQL C api用户输入行
- 输入到文件并输出到另一个文件,并将流文件传递给函数
- 用户定义函数中的指针和输入
- 如何在C++中检查2D数组中负值的输入验证
- 如何只允许用户输入正整数
- 在while循环中输入带有std::cin的字符串后,控制台会输出大量胡言乱语
- 输入中的字符串数未知(以字母表示)
- cpp二进制搜索问题,计算给定数组中输入元素的出现次数
- 使用 AWK 通过多个输入汇总列