【问题标题】:cat command loading filecat 命令加载文件
【发布时间】:2023-03-28 18:04:01
【问题描述】:

cat 命令是否将整个文件加载到主内存中?

for i in `cat file.txt`; do
    # some logic on i
done

当文件很大(例如 5-6 GB)时,此代码是否会出现任何性能问题?

【问题讨论】:

  • @pixelbeat 有正确的答案。此外,您可能会考虑将file.txt 传递给采用标准输入的脚本。你在循环中执行的逻辑是什么?
  • 我正在尝试逐行读取一个大文件。那么哪种方法会更好。
  • 循环中的逻辑是根据分隔符获取数据并插入到数据库中
  • 如果您要加载到数据库中,那么使用下面提供的答案可能没问题,因为与数据库插入相比,循环基础结构的性能不会显着。但是,如果您有一个巨大的文件,您可能需要考虑在数据库上使用一些批量导入功能,因为 5-6 GB 的逐行插入将需要很长时间。

标签: unix cat


【解决方案1】:

cat 不会加载整个文件,但上面 for 循环中的进程替换会

如果您每行有一个条目,您可以改为:

while read line;
    # some logic on $line
done < file.txt

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-02
    • 1970-01-01
    • 2013-01-30
    • 2011-07-15
    • 2016-08-08
    • 1970-01-01
    相关资源
    最近更新 更多