Linux如何实现逐行读取文件,Shell脚本逐行读取文件怎么写?

Linux 逐行读取文件详解

在 Linux 环境中,逐行读取文件是脚本编写和数据处理中最常见的需求,根据不同的应用场景(如简单显示、复杂逻辑处理或高性能需求),可以选择不同的实现方式。

使用 Shell 脚本的 while 循环(最常用)

这是在 Bash 脚本中处理文件的标准方法,适用于需要对每一行执行特定逻辑的场景。

【linux从入门到入土】shell脚本创建和基本运行方法,输出第一个hello world
加载中
【linux从入门到入土】shell脚本创建和基本运行方法,输出第一个hello world

标准写法:

while IFS= read -r line; do
    echo "当前行内容: $line"
done < "file.txt"

关键参数解析:

  • IFS=:将内部字段分隔符(Internal Field Separator)设置为空,这样可以防止行首和行尾的空格或制表符被自动删除
  • read -r-r 参数防止反斜杠 被当作转义字符处理,确保读取到的是原始文本

    Linux如何实现逐行读取文件,Shell脚本逐行读取文件怎么写?

  • < "file.txt":将文件内容重定向输入到 while 循环中。

使用 awk 处理(高效处理)

awk 是一种强大的文本处理语言,它默认就是逐行读取并处理的,速度比 while 循环快得多。

  • 打印每一行:
    awk '{print $0}' file.txt
  • 根据条件读取并处理:
    # 仅打印包含 "Error" 关键字的行
    awk '/Error/ {print "发现错误: " $0}' file.txt
  • 处理特定列:
    # 打印每行的第一列
    awk '{print $1}' file.txt

使用 sed 处理(流编辑器)

sed 适用于对文件的每一行进行替换、删除或特定行提取

  • Linux如何实现逐行读取文件,Shell脚本逐行读取文件怎么写?

    逐行打印(等同于 cat):

    sed -n 'p' file.txt
  • 读取并替换每行中的字符串:
    # 将每行中的 "old" 替换为 "new"
    sed 's/old/new/g' file.txt

使用 Python 实现(复杂逻辑)

当读取逻辑过于复杂(如需要调用 API、进行复杂的数学运算)时,建议使用 Python。

推荐写法:

with open('file.txt', 'r', encoding='utf-8') as f:
    for line in f:
        # .strip() 用于去除行尾的换行符 n
        print(line.strip())
  • 优点:内存效率高(迭代器模式),不会一次性将大文件加载到内存中。

方案对比与选择指南

根据你的需求选择最合适的工具:

  • 简单逻辑/系统管理脚本 $rightarrow$ 使用

    Linux如何实现逐行读取文件,Shell脚本逐行读取文件怎么写?

    while read

  • 大规模文本过滤/字段提取 $rightarrow$ 使用 awk
  • 快速文本替换/行删除 $rightarrow$ 使用 sed
  • 复杂业务逻辑/数据分析 $rightarrow$ 使用 Python

常见陷阱提示

  • 大文件处理:避免使用 for line in $(cat file.txt),因为这会将整个文件加载到内存中,且在遇到空格时会将一行拆分成多个元素,导致结果错误且内存溢出
  • 权限问题:确保执行读取操作的用户对目标文件具有 r (read) 权限。
  • 换行符问题:如果文件来自 Windows(CRLF),建议先使用 dos2unix file.txt 转换,否则 read 命令可能会在行尾留下不可见的 r 字符。

首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/488044.html

(0)
服务的短信有什么作用,短信验证码收不到怎么办?
上一篇 2026年7月12日 17:52
HKT香港家宽618有折扣吗,深港IEPL专线怎么选?
下一篇 2026年7月12日 17:55

相关推荐

  • 如何在Windows下编辑Linux文件?Linux与Windows互传文件方法

    在Windows环境下编辑Linux文件,最推荐且高效的方式是通过VS Code配合Remote-SSH插件,或直接在Windows 11中启用WSL(Windows Subsystem for Linux)子系统,实现原生级的无缝编辑体验,过去,开发者在Windows上处理Linux代码往往需要借助Xshel……

    2026年7月9日
    18000
  • Linux PPPoE怎么配置?Linux搭建PPPoE服务器详细教程

    Linux配置PPPoE的核心在于使用pppoeconf工具自动检测网卡并生成配置文件,或手动编辑/etc/network/interfaces配合rp-pppoe或ppp软件包实现宽带拨号连接,在家庭宽带和企业边缘网络中,PPPoE(以太网上的点对点协议)依然是最常见的接入方式,许多Linux用户面对黑漆漆的……

    2026年7月4日
    3300
  • Linux不断重启怎么解决?服务器频繁自动重启原因

    Linux服务器不断重启通常由硬件故障、内核恐慌(Kernel Panic)或关键服务配置错误引发,首要排查步骤是检查/var/log/messages日志并运行内存诊断工具,当你的Linux服务器像陷入死循环一样反复重启时,这种体验确实令人抓狂,对于运维人员来说,这不仅仅是服务中断的问题,更可能意味着底层硬件……

    2026年7月6日
    18400
  • linux sleep 0有什么用?linux sleep命令用法详解

    在 Linux 中,sleep 0 是一个常用的命令,它的作用是立即暂停当前进程 0 秒,虽然看起来没有实际意义,但在脚本编程中非常有用,主要用于以下几种场景:强制刷新输出缓冲区当你在脚本中使用 echo 或其他命令输出信息时,输出可能被缓冲(buffered),导致信息不会立即显示到终端,sleep 0 可以……

    2026年7月12日
    14000
  • linux内核变化有哪些?linux内核版本更新详解

    Linux内核的每一次迭代都在重塑云计算与边缘计算的底层逻辑,2026年的核心趋势聚焦于eBPF技术的深度集成、实时性优化以及针对AI负载的专用调度器改进,Linux内核演进的核心驱动力与架构变革近年来,Linux内核不再仅仅是操作系统的核心,它正演变为云原生时代的“超级抽象层”,业内专家指出,内核层面的变化直……

    2026年7月8日
    13400
  • 如何在Linux下部署Apache Django?Linux服务器配置Apache

    Apache、Django与Linux是构建高并发、高安全性Web应用的黄金三角组合,其核心优势在于Linux提供底层稳定支撑,Django负责快速业务逻辑开发,而Apache作为成熟稳定的反向代理服务器,三者结合能实现从底层系统到上层应用的全链路性能优化与安全加固,在2026年的Web开发环境中,虽然Ngin……

    2026年7月8日
    9000
  • 深度linux分区怎么做?linux系统分区方案详解

    深度Linux分区并非单纯划分硬盘空间,而是通过合理分配根目录、交换空间及独立用户数据区,在保障系统稳定性的同时最大化硬件性能与数据安全,很多初次接触Linux的用户,面对安装界面那密密麻麻的分区选项往往感到无从下手,Windows用户习惯了“C盘装系统、D盘存资料”的傻瓜式操作,但Linux的逻辑完全不同,它……

    2026年7月6日
    12900
  • linux ls color怎么设置?linux命令颜色配置详解

    在Linux终端中让ls命令显示彩色文件,最核心的方法是修改.bashrc配置文件中的alias ls=’ls –color=auto’,或者确保系统已安装并正确配置了dircolors工具,这能显著提升文件管理的视觉效率和安全性,很多刚接触Linux的用户会发现,终端里的文件列表全是黑白灰的,不仅看起来枯燥……

    2026年7月6日
    8000
  • Redis Linux集群怎么搭建?redis集群配置详解

    Redis Linux集群通过主从复制与哨兵或Cluster模式实现高可用与水平扩展,核心优势在于内存级读写性能及自动故障转移能力,适合高并发、低延迟的业务场景,在Linux环境下部署Redis集群,早已不是简单的软件安装,而是一场关于架构稳定性与资源利用率的精密博弈,许多开发者在初期往往低估了分布式缓存的复杂……

    2026年7月6日
    13300
  • Linux课程论文怎么写?Linux系统安装配置教程

    Linux课程论文的核心在于通过真实的系统运维场景,展示从内核原理到Shell脚本编写的完整闭环,而非单纯堆砌理论定义,为什么Linux课程论文需要摆脱“教科书式”复制?在计算机专业的学习生涯中,Linux操作系统不仅是必修课,更是通往后端开发、云计算和网络安全领域的基石,许多学生在撰写相关论文时,往往陷入一个……

    2026年7月11日
    9300

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注