MST

星途 面试题库

面试题:Bash循环性能优化及复杂嵌套循环应用

假设有一个包含大量文件(假设10万个)的目录,每个文件都是CSV格式,每行记录格式为“姓名,年龄,分数”。现在要求编写一个Bash脚本,通过高效的循环控制(需考虑性能优化),统计出所有文件中年龄大于30且分数大于80的人数。脚本中至少要使用两层循环嵌套,并且要考虑如何在大规模数据下减少内存占用和提高执行效率。
33.9万 热度难度
编程语言Bash

知识考点

AI 面试

面试题答案

一键面试
#!/bin/bash

total_count=0
for file in $(ls *.csv); do
    while IFS=, read -r name age score; do
        if (( age > 30 && score > 80 )); then
            ((total_count++))
        fi
    done < "$file"
done

echo "年龄大于30且分数大于80的人数: $total_count"

说明:

  1. 外层循环:通过 for file in $(ls *.csv); do 遍历当前目录下所有CSV文件。
  2. 内层循环:利用 while IFS=, read -r name age score; do 逐行读取每个CSV文件的内容,并以逗号作为分隔符解析每行的姓名、年龄和分数。
  3. 条件判断:通过 if (( age > 30 && score > 80 )); then 判断年龄是否大于30且分数是否大于80,满足条件则计数加1。
  4. 内存优化:采用逐行读取文件内容的方式,避免一次性加载整个文件到内存,从而减少内存占用。
  5. 性能优化:这种简单的循环结构在处理大规模文件时相对高效,并且Bash本身在处理文件I/O方面也有一定的优化。