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

相关推荐

  • 10M服务器能带动多少人,并发量怎么算?

    10M带宽的服务器在多数场景下可以稳定承载200-500人同时在线访问,具体取决于业务类型、页面体积和并发行为,文字站可破千,视频站可能连50人都吃力,先算一笔账:10M带宽的真实吞吐能力10M带宽通常指10Mbps(兆比特每秒),这是IDC行业的基础计量单位,换算成我们熟悉的下载速度,需要除以8,即10Mbp……

    2026年9月8日
    100
  • linux自解压怎么操作?linux自解压命令详解

    Linux自解压脚本通过结合tar打包与shell命令实现,核心原理是利用文件尾部的二进制数据偏移量定位并执行解压指令,这种方式无需额外工具即可在单文件中封装完整程序包,在Linux系统运维和软件分发场景中,开发者经常面临一个痛点:如何让用户只需双击或运行一个文件就能完成复杂的多文件部署?传统的tar.gz压缩……

    2026年7月9日
    19000
  • 2米高服务器机柜有多重,机柜承重标准是什么?

    2米高服务器机柜(42U)的空载净重通常在100公斤到160公斤之间,具体取决于板材厚度、宽度深度以及是否包含侧板和玻璃门,但这个数字仅仅是空柜子的自重,实际运维中你和楼板真正承担的重量远不止于此,2米高机柜的重量到底由什么决定很多人第一次采购机柜时,只看“几U”和价格,往往忽略了重量这个硬指标,2米高对应的就……

    2026年9月6日
    300
  • r750xs服务器能装多少块固态硬盘

    戴尔PowerEdge R750xs服务器在最大化配置下可安装16块2.5英寸固态硬盘或8块3.5英寸固态硬盘,若搭配后置硬盘笼,还能额外增加2块2.5英寸固态硬盘,这台2U机架式服务器是戴尔为中小型虚拟化、数据库和通用计算场景推出的主力机型,不少人把它和旗舰款R750混淆,以为两者扩展能力一样,实际上R750……

    2026年8月13日
    700
  • 1000IP的云服务器要买多大?,选购时看哪些参数?

    1000IP的网站,买一台2核4G的云服务器就够用了,月流量控制在200GB以上,带宽按3M到5M起步,静态站甚至可以降到1核2G,这是多数场景下的起步配置,但具体怎么选,还得看你跑的是什么业务,先搞清楚1000IP意味着什么1000IP不等于1000个访客同时在线,IP是独立访客数,一个用户一天可能打开好几页……

    2026年8月26日
    600
  • Linux vncserver怎么启动,Linux远程桌面vncserver怎么配置?

    Linux VNC Server 安装与启动指南VNC (Virtual Network Computing) 允许用户远程控制 Linux 桌面环境,本文以最常用的 TigerVNC 为例,介绍从安装到启动的完整流程,安装桌面环境与 VNC Server在启动 VNC 之前,服务器必须安装有图形界面 (GUI……

    2026年7月14日
    600
  • 中国有自己的Linux内核吗,国产操作系统哪个好用?

    中国Linux内核正从简单的“发行版封装”转向深层的“内核级自主创新”,通过在内存管理、调度算法及国产指令集适配上的优化,已在关键基础设施领域实现核心替代,中国Linux内核的现状与演进路径当前的国产Linux生态早已脱离了单纯的“换皮”阶段,早期的国产操作系统大多基于CentOS或Ubuntu进行简单的界面修……

    相关资讯 2026年7月13日
    1500
  • 服务器一般有多少个CPU,配置要求是怎样的?

    服务器CPU数量通常为1到4个,但大型关键业务系统可达8个以上,具体取决于计算架构、应用场景和扩展需求,服务器CPU数量不是越多越好,选型要看这几点很多人以为CPU数量越多,服务器性能就越强,这个想法不完全对,服务器CPU数量受到**主板芯片组、物理空间、散热设计、操作系统许可**等多重因素制约,对于80%以上……

    相关资讯 2026年8月21日
    1600
  • 服务器1m宽带可以在线多少人?,怎么计算在线人数

    服务器1M带宽能支撑的在线人数并无固定值,它取决于网站类型、页面大小、并发行为及架构优化,但多数情况下,一个经过压缩和静态化的企业展示页,1M带宽可承载日均数千PV的访问量,核心影响因素:带宽到底卡在哪里单位换算与实际可用速率1M带宽通常指1Mbps(兆比特每秒),换算成下载字节速度约为128KB/s,这是理论……

    2026年8月20日
    600
  • 谷歌云服务器一台有多少个IP

    谷歌云服务器一台默认分配1个内网IP和1个可选外部IP,但通过别名IP、多网卡等高级配置,一台实例可以持有多个内网IP,外部IP则受项目配额约束,谷歌云的IP管理逻辑和传统物理服务器有很大差异,很多人第一次接触时,会习惯性地问“一台机器带几个IP”,但谷歌云把IP视作独立的网络资源,跟虚拟机实例是松耦合关系,搞……

    2026年8月14日
    700

发表回复

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