【发布时间】:2020-02-04 14:01:24
【问题描述】:
我正在使用 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 上执行。
【问题讨论】:
-
awk -F';' '/'"$x"'/ {y+=$7} END {print y}' Data26092019 Data27092019?你想对这些文件做什么? -
我希望该命令对所有文件单独执行。
-
for all files seperate- 所以你想“遍历文件”并运行“针对每个文件”的命令。当然google.com/search?q=iterate+over+files+bash。您的命令看起来很慢 - 它处理同一个文件 120 次。创建一个长的 awk 命令并只处理一次文件可能是可取的并且真的更快。如果您只是每个第一列的第 7 列的总和,我认为没有必要遍历所有可能的值,awk数组可以来救援。 -
不要
for x in {10..20}:{00..59};。你正在运行awk120 次。运行一次。您的 awk 脚本看起来真的很像awk '{ sum[$1]+=$7 } END{ foreach (i in sum) print i " " sum[i]; }。查看 ex stackoverflow.com/questions/42024296/… 了解有关此类主题的更多信息。 -
我正在使用这个版本的命令,因为我希望所有分钟的总和分开。
标签: linux shell awk text-processing