第三行的总和并相应地划分行

2024-06-22

我有一个如下的文件,其中有 n 行,我想计算其总和(基于第三列),并将行相应地分布在 3 个不同的文件中(基于每个文件的总和)

例如,如果我们将所有第三列值相加,则总数为 516,如果我们将其除以 3,则为 172。

所以我想向文件添加一行,使其不超过 172 标记,与第二个文件相同,其余所有行应移动到第三个文件。

输入文件

a aa 10
b ab 15
c ac 17
a dy 30
y ae 12
a dl 34
a fk 45
l ah 56
o aj 76 
l ai 12 
q al 09
d pl 34
e ik 30
f ll 10
g dl 15 
h fr 17
i dd 23
j we 27
k rt 12
l yt 13
m tt 19

预期产出

file1(total -163)


a   aa  10
b   ab  15
c   ac  17
a   dy  30
y   ae  12
a   dl  34
a   fk  45

文件2(共153)

l   ah  56
o   aj  76
l   ai  12
q   al  9

文件3(总计 - 200)

d   pl  34
e   ik  30
f   ll  10
g   dl  15
h   fr  17
i   dd  23
j   we  27
k   rt  12
l   yt  13
m   tt  19

您能否尝试按照 GNU 中所示的示例进行编写和测试awk.

awk '
FNR==NR{
  sum+=$NF
  next
}
FNR==1{
  count=sum/3
}
{
  curr_sum+=$NF
}
(curr_sum>=count || FNR==1) && fileCnt<=2{
  close(out_file)
  out_file="file" ++fileCnt
  curr_sum=$NF
}
{
  print > (out_file)
}'   Input_file  Input_file

解释:对上述内容添加详细解释。

awk '                                               ##Starting awk program from here.
FNR==NR{                                            ##Checking condition FNR==NR which will be TRUE when first time Input_file is being read.
  sum+=$NF                                          ##Taking sum of last field of all lines here and keep adding them to get cumulative sum of whole Input_file.
  next                                              ##next will skip all further statements from here.
}
FNR==1{                                             ##Checking condition if its first line for 2nd time reading of Input_file.
  count=sum/3                                       ##Creating count with value of sum/3 here.
}
{
  curr_sum+=$NF                                     ##Keep adding lst field sum in curr_sum here.
}
(curr_sum>=count || FNR==1) && fileCnt<=2{          ##Checking if current sum is <= count OR its first line(in 2nd time reading) AND output file count is <=2 here.
  close(out_file)                                   ##Closing output file here, may NOT be needed here since we are having only 3 files here in output.
  out_file="file" ++fileCnt                         ##Creating output file name here.
  curr_sum=$NF                                      ##Keep adding lst field sum in curr_sum here.
}
{
  print > (out_file)                                ##Printing current line into output file here.
}'   Input_file  Input_file                         ##Mentioning Input_file names here.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

第三行的总和并相应地划分行 的相关文章

  • 从文件中删除包含非英语 (Ascii) 字符的行

    我有一个文本文件 其中包含来自不同语言的字符 例如 中文 拉丁文等 我想删除包含这些非英语字符的所有行 我想包含所有英文字符 a b 数字 0 9 和所有标点符号 我如何使用 awk 或 sed 等 unix 工具来完成此操作 Perl 支
  • 在linux中将包含word的行从一个文件复制到另一个文件

    我想复制包含某些单词的行file1 to file2 Suppose file1 ram 100 ct 50 gopal 200 bc 40 ravi 50 ct 40 krishna 200 ct 100 file2应该只有包含 ct 的
  • 使用 SED 将单词的第一个字母大写

    如何将单词的第一个字母替换为大写字母 例如 Trouble me Gold rush brides into Trouble Me Gold Rush Brides 这一行应该做到这一点 sed e s b u 1 g
  • 使用 awk 处理多个文件

    我必须使用 awk 处理大量 txt 文件 每个文件 1600 万行 我必须阅读例如十个文件 File 1 en sample 1 200 en n sample 2 10 en sample 3 10 File 2 en sample 1
  • 使用 tac 和 sed 反转文件

    我有一个用例 我需要搜索并替换文件中最后一次出现的字符串并将更改写回文件 下面的案例是该用例的简化版本 我正在尝试反转该文件 进行一些更改 再次将其反转并写入该文件 我为此尝试了以下代码片段 tac test sed s a b sed i
  • 如何 grep 文件中不区分大小写的字符串?

    我有一个文件file1其结尾为Success OR success 我想要grep为了这个词success以一种不区分大小写的方式 我写了以下命令 但它区分大小写 cat file1 grep success 我怎样才能改变它 以便它ret
  • Bash:将字符串添加到文件末尾而不换行

    如何将字符串添加到文件末尾而不换行 例如 如果我使用 gt gt 它将添加到文件末尾并换行 cat list txt yourText1 root host 37 echo yourText2 gt gt list txt root hos
  • 如何使用 Bash 编写二进制文件?

    我的问题是我需要创建一个包含以下确切字节的文件 48 00 49 00 我不能使用C perl 其他脚本语言 目标是嵌入式设备 我使用 awk 尝试过 在桌面上它确实有效 awk BEGIN printf c c c c 48 00 49
  • awk 脚本中出现“BEGIN 块必须有操作部分”错误

    这是我的代码 bin sh filename usr bin find name INSTANCE log echo filename is filename awk BEGIN print Processing file filename
  • 如何用awk删除以“C”开头的行?

    如何使用以下命令从文本文件中删除以 C 开头的行awk 有什么建议请 如果数据在文件中data txt then With awk awk C data txt With grep grep v C data txt 显示开头不带 C 的所
  • AWK数组初始化

    是否可以使用常见的方法在AWK中初始化数组list syntax array val1 val2 val3 或者是否必须使用索引值 syntax array 0 val1 array 1 val2 array 2 val3 不 不 您可以这
  • Windows 10 上的 LibPNG 构建问题

    我试图在 Windows 10 上构建 libpng 以获取 win32 二进制文件 但我认为有一个与 awk 解析带有 CRLF 行结尾的文件相关的问题 我尝试使用 dos2unix 命令转换文件 但没有成功 结果相同 在 make 命令
  • 替换多个文件中的多个字符串

    我有一个包含正则表达式列表和替换文字字符串的文件 格式如下 OLD REGEXP 1 NEW STRING 1 OLD REGEXP 2 NEW STRING 2 我想替换所有匹配的字符串OLD REGEXP X with NEW STRI
  • 第三行的总和并相应地划分行

    我有一个如下的文件 其中有 n 行 我想计算其总和 基于第三列 并将行相应地分布在 3 个不同的文件中 基于每个文件的总和 例如 如果我们将所有第三列值相加 则总数为 516 如果我们将其除以 3 则为 172 所以我想向文件添加一行 使其
  • 通过匹配模式将字符串替换为另一个文本文件中的行

    我有一个带有对应键 gt 值的文件 sort keyFile txt head ENSMUSG00000000001 ENSMUSG00000000001 Gnai3 ENSMUSG00000000003 ENSMUSG0000000000
  • 如何在unix中对ls输出进行编号?

    我正在尝试编写一个格式为 id file absolute path 的文件 该文件基本上递归地列出文件夹中的所有文件 并为每个文件提供一个标识符 如 1 2 3 4 我可以使用以下命令递归地获取文件的绝对路径 ls d 1 PWD 但是
  • 使用 sed 更改 /etc/fstab

    我想改 etc fstab在脚本内 我想添加acl属性到根分区 One fstab行条目如下所示 UUID 730aee20 52b7 4920 75cd d0d995ef2445 ext3 errors remount ro 0 1 我想
  • 检测 UTF-8 编码文本文件中的损坏字符

    我有一个使用错误的字符编码编辑的文本文件 因此当我使用 UTF 8 打开它时 某些字符串中有一些 mojibake 和损坏的字符 哪种脚本语言能够最有效地检测这些损坏的字符 Perl 不是一个选择 我基本上试图找到一种使用脚本扫描文本文件并
  • sed:用下划线替换引号内的空格

    我有输入 例如 来自ifconfig run0 scan在 OpenBSD 上 它有一些用空格分隔的字段 但某些字段本身包含空格 幸运的是 包含空格的此类字段总是用引号引起来 我需要区分引号内的空格和分隔符空格 这个想法是用下划线替换引号内
  • 如何仅使用 grep/sed 提取子字符串和数字

    我有一个包含文本和数字的文本文件 我想使用 grep 只提取我需要的数字 例如 给定一个文件如下 miss rate 0 21 ipc 222 stalls n shdmem 112 所以说我只想提取数据miss rate这是0 21 如何

随机推荐

  • 一个批处理文件如何获取另一个批处理文件的退出代码?

    我有两个批处理文件 task bat and runtask bat The runtask batcalls task bat我想要runtask bat获取退出代码task bat到一个变量中 这怎么可能做到呢 任务 bat echo
  • 如何在类属性中存储函数?

    在我的代码中 我有一个类 其中一个方法负责过滤一些数据 为了允许后代自定义 我想将过滤函数定义为类属性 如下所示 def my filter func x return x 2 0 class FilterClass object filt
  • Java:未映射的目标属性

    我在使用 Mapper 时遇到问题 我正在使用 mapstruct processor 来构建 Maven 项目 每次我都会收到警告 警告 15 16 java 未映射的目标属性 from to 警告 13 13 java 未映射的目标属性
  • 运行时错误'-2147352567 (80020009)'指定集合的​​索引超出范围

    我定期遇到错误 运行时错误 2147352567 80020009 指定集合的 索引超出范围 抛出这个错误就行了 对于 wks Shapes 中的每个 cb 这是完整的代码 Sub SelectAll wks As Worksheet Ap
  • 以编程方式切换“限制后台数据”

    如果我进入 设置 数据使用 并按 属性 我可以使用运行 Android 4 1 2 的 Samsung Galaxy S2 i9105P 激活 限制后台数据 有什么方法可以以编程方式执行此操作 无论是打开还是关闭 我只想在某些条件下激活 停
  • 一些 sonatype 关系问题

    我在 LAN 内部署了一个 sonatype nexus 服务器 将一些远程存储库映射到我的公共存储库 替代文本http img576 imageshack us img576 5517 7875d01884ad4234a5b02e2 pn
  • 如何从有向无环图导出FRP?

    我目前正在研究我的下一个项目 目前处于预规划阶段 因此这个问题只是为了了解现有技术的概述 Setup 我有一个具有多个输入和输出的有向无环图 DAG 现在考虑人工神经网络 处理这种结构的常见方法是在每个 时间 步骤上处理整个网络 我相信这是
  • 如何添加 svg 作为元素的 :before 伪元素上的内容? [复制]

    这个问题在这里已经有答案了 我正在尝试使用 svg 内容 before伪元素 为此 我提出以下问题 有没有办法使用 SVG 作为伪元素中的内容 before 或 after https stackoverflow com questions
  • 在 firebase 中使用多个数据库是否会使每个数据库都有自己的用法?

    我在我的 Android 应用程序中使用 firebase 数据库 数据库的下载限制为 10 GB 月 如果我将我的应用程序升级到 Blaze 计划并创建另一个数据库 每个数据库将能够下载最多 10 GB 的数据吗 如果我将数据分开 每月最
  • 如何处理 iOS 中未读的推送通知?

    我有一个 iOS 5 1 应用程序 它注册到 APNS 服务以接收通知 注册成功 我正确收到通知 当我尝试处理通知时 问题就出现了 一旦应用程序运行 该方法didReceiveRemoteNotificationAppDelegate 中的
  • Indy 10 和 sslvTLSv1_2

    我发布的网站目前支持 TLS v1 1 和 TLS 1 2 他们很快将只允许 TLS 1 2 版连接 为此我将 Delphi 5 升级到了 Indy 10 目前 我在代码中创建组件 并且一次运行 3 个线程一切都运行良好 HTTp TIdH
  • 使用 System.Drawing 在桌面上绘制十字准线?

    我正在尝试创建一个非常小的 c 实用程序应用程序 它将利用 System Drawing 在桌面上绘制全屏 静态 固定的十字线 以便我可以将一些桌面项目与相关的屏幕中心对齐 我尝试查找一些示例 但没有找到很多示例 并且想知道是否有人在这方面
  • 短路:Or Else 与 Or 组合

    如果我有以下 a OrElse b 是True那么显然 b 永远不会被评估 但如果我添加一个Or 然后呢 a OrElse b Or c c 是否 应该被评估 如果我放入一些括号怎么办 抱歉 如果这是基本的 当然 我可以自己测试答案 但我无
  • 如何在 iPhone 上从“Base64String”格式的原始图像数据获取 UIImage?

    在我的应用程序中 我从服务器接收 XML 文件中的图像数据 该数据是图像 jpeg 或 png 或 tiff 等 服务器将其转换为 Base64String 格式字节 以通过 XML 文件发送到我的应用程序 在我的应用程序端 应用程序将这些
  • 如何在iPhone中编译Eigen

    我想编译 Eigen 并在具有 NEON 功能的 iPhone 中使用它 如何在iPhone中编译Eigen 是否需要针对特定 ARM芯片进行编译 我需要修改构建脚本吗 Cheers 由于最新版本的 Eigen 开箱即用地支持 ARM NE
  • 如何自动点击“您要打开还是保存?”

    我想知道是否有以下 c 或 selenium 解决方案 我正在使用 selenium 从网络服务器下载文件 不幸的是 在 IE9 中无法禁用此弹出屏幕 c 中有没有单击 保存 按钮的解决方案 Client WebClient client
  • 笛卡尔幂(具有自任意次的笛卡尔积)

    我的代码需要多次计算数组与其自身的笛卡尔积 例如 如果我的数组是 1 2 我需要将这些值填充到三个槽中 结果将是 1 1 1 1 1 2 1 2 1 1 2 2 2 1 1 2 1 2 2 2 1 2 2 2 做到这一点最简单的方法是什么
  • VBA:对矩阵求和

    为什么这个功能不起作用 Type funtest 2 1 在 Excel 中 它会给我 VALUE Public Function funtest a As Double As Double Dim z j i As Integer Dim
  • 强制嵌入 Vimeo HTML5 视频

    我正在尝试嵌入 Vimeo 视频并强制其默认使用 HTML5 这是一个线程 https stackoverflow com questions 5845484 force html5 youtube video关于做我正在尝试做的同样的事情
  • 第三行的总和并相应地划分行

    我有一个如下的文件 其中有 n 行 我想计算其总和 基于第三列 并将行相应地分布在 3 个不同的文件中 基于每个文件的总和 例如 如果我们将所有第三列值相加 则总数为 516 如果我们将其除以 3 则为 172 所以我想向文件添加一行 使其