linux - 如何在多个文件上使用 awk?
问题描述
我正在使用 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
它必须在Data26092019
和上执行Data27092019
。
解决方案
编辑:如果您想使用END
(或没有 GNUawk
)+您希望 sum 与您传递 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
推荐阅读
- python - 如何计算熊猫列中字符串的字符数
- java - 如何将字符串转换为 int[] 并检索数组以进行进一步处理
- r - rbinom(或其他)在 data.table 中按行和组
- javascript - 我如何从 textarea 中获取价值并检查它?
- excel - 如何根据excel中的相邻列值填充列?
- swift - 无法将类型“[(键:字符串,值:整数)]”的返回表达式转换为返回类型“[字符串:整数]”
- c++ - setlocale() 中语言环境的预期格式究竟是什么?
- c++ - C/C++ recv 挂起,虽然本地服务器发送数据
- html - 如何在 2 个元素上制作盒子阴影但使 1 个元素位置变粘?
- javascript - 将事件发送到另一个班级