gpt4 book ai didi

linux - 如何在多个文件上使用 awk?

转载 作者:太空宇宙 更新时间:2023-11-04 04:42:12 24 4
gpt4 key购买 nike

我正在使用Linux。我编写了一些如下所示的代码:

for x in {10..20}:{00..59}; do awk -F';' '/'"$x"'/ {y+=$7} END {print y}' Data26092019; done

如何在多个文件上使用此命令,例如:Data26092019 和 Data27092019?

文件是这样的:

09:55:13;ACSEL;4.850;16;77.60;1;1
09:55:13;ACSEL;4.850;40;194.00;2;1
09:55:13;ACSEL;4.850;465;2255.25;3;1
...

输出示例:

Data26092019 4988 10:00
Data26092019 2778 10:01
...
Data27092019 3252 10:00
Data27092019 3002 10:01

也许它应该与另一个 for 循环一起使用,或者您可以指定文件。

主要命令是:

for x in {10..20}:{00..59}; do awk -F';' '/'"$x"'/ {y+=$7} END {print y}' Data26092019; done

它必须在 Data26092019Data27092019 上执行。

最佳答案

编辑:如果您想使用END(或没有GNU awk)+您希望按照传递Input_files的顺序求和,请尝试以下操作。

使用END:

awk '
BEGIN{
FS=";"
}
!filename[FILENAME]++{
a[++count]=FILENAME
}
{
sum[FILENAME]+=$7
}
END{
for(i=1;i<=count;i++){
print "Sum of minute for file: " a[i] " is: " sum[a[i]]
}
}' Data26092019 Data27092019
<小时/><小时/>

使用ENDFILE:

您能否尝试以下操作,未进行测试,因为 OP 没有提供示例。需要 GNU awk

awk 'BEGIN{FS=";"} {sum+=$7} ENDFILE{print "Sum of minute for file: " FILENAME " is: " sum;sum=""}' Data26092019 Data27092019

关于linux - 如何在多个文件上使用 awk?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58266760/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com