脚本明明写对了,为什么就是匹配不到?\r\n 和 \n 的坑
一句话: Perl、Python、Shell 脚本在 Windows 上跑用\n匹配行尾总是失败——因为文件实际是\r\n。加上 Windows 大小写不敏感.c.C两个坑加起来能浪费一上午。适合谁读适合嵌入式开发者、单片机初学者及遇到类似问题的工程师坑 1\n 匹配不到 \r\n写了个 Perl 脚本批量替换文件内容s/old_function\n/new_function\n/g;在 Linux 上跑得好好的Windows 上永远匹配不到。原因Windows 文本文件行尾是\r\nCRLF不是\nLF。Perl 的\n只匹配 LF不匹配 CRLF。修法# 跨平台兼容写法 s/old_function\r?\n/new_function\r?\n/g; # 或者先统一行尾符 s/\r\n/\n/g; # 先全转成 LF s/old_function\n/new_function\n/g; # 再操作Python 同理# open 时指定 newline with open(file.c, r, newline) as f: content f.read() # 或者在正则里加 \r? import re re.sub(rold_function\r?\n, new_function\r?\n, content)一刀切的修法在 Windows 上用 Git Bash 跑脚本前统一行尾符# CRLF → LF sed -i s/\r$// *.c # 或者用 dos2unix dos2unix *.c # 跑完脚本再转回去 unix2dos *.c坑 2Windows 大小写不敏感列了文件清单发现少了drv_gpio.c。找了半天其实它就在目录里——只是文件名是Drv_Gpio.c。Windows 不区分大小写drv_gpio.cDRV_GPIO.cDrv_Gpio.c。你用ls *.c列出来的文件名和实际大小写可能不一致但 Windows 能访问。Git 区分大小写问题不明显。直到把文件拷到 Linux 上——编译直接报drv_gpio.c: No such file or directory。因为include里写的是drv_gpio.h实际文件是Drv_Gpio.h。怎么避免# 检查哪些 include 大小写不一致 grep -r #include *.c | while read line; do file$(echo $line | grep -o [^]* | tr -d ) if [ ! -f $file ]; then echo NOT FOUND: $file (in $line) fi done或者一开始就定规范所有文件名全小写。.c.h后缀必须小写前缀drv_app_mod_bsp_全小写。总结坑原因修法\n匹配不到Windows 用\r\n用\r?\n或先dos2unix文件找不到Windows 不区分大小写全小写命名规范Linux 上报错Git 区分大小写git mv改文件名别用 Windows 资源管理器有用的话点个收藏下次调试直接用。有问题欢迎评论区交流看到了都会回。下一篇改了5个地方才修好——编译错误、看门狗、DAC踩坑、协议对齐——真实Bug故事排查方法论

相关新闻

YASKAWA CX80-00205-V1 控制器模块

YASKAWA CX80-00205-V1 控制器模块

YASKAWA CX80-00205-V1 是安川电机推出的一款控制器模块,属于其运动控制与自动化解决方案的核心组件之一。产品特点制造商为安川电机,专注于运动控制、机器人技术和自动化解决方案。继承了安川在伺服、驱动和工业机器人领域一贯的精度和可靠性特点。产品…

2026/10/6 0:44:51 阅读更多 →
三团队抢8张AMD卡:配额策略改了三版才把闲置率压到9%

三团队抢8张AMD卡:配额策略改了三版才把闲置率压到9%

AMD ROCm 集群动态配额优化实战:从资源战争到高效协同 初始方案:固定分区为何失效 在混合云架构下,我们最初采用静态配额策略为三个团队分配8张AMD Instinct MI250X计算卡。这种看似公平的分配方式在实际运行中暴露出两大核心问题&#xff…

2026/10/8 0:49:45 阅读更多 →
AI驱动字体设计革命:高通GT-Fontlab核心功能与实战指南

AI驱动字体设计革命:高通GT-Fontlab核心功能与实战指南

1. 项目概述:当字体设计遇上AI,一场效率革命正在发生 最近,高通在字体设计圈扔下了一颗“重磅炸弹”——GT-Fontlab。这可不是一个简单的字体编辑软件,而是一个集成了AI能力的专业级字库工具,最关键的是,它…

2026/10/4 17:51:33 阅读更多 →

最新新闻

czsc 缠论信号解析:tas_macd_bc_ubi_V230804 未完成笔 MACD 背驰观察信号实战指南

czsc 缠论信号解析:tas_macd_bc_ubi_V230804 未完成笔 MACD 背驰观察信号实战指南

金融科技 【免费下载链接】czsc 缠中说禅技术分析工具;缠论;股票;期货;Quant;量化交易 项目地址: https://gitcode.com/gh_mirrors/cz/czsc 点击查看 免费下载 本文档以 .claude/skills/signal-functions/…

2026/10/10 2:06:50 阅读更多 →
tldr 保加利亚语别名页面 bun-x:别名页机制与 bunx 包执行器实战解析

tldr 保加利亚语别名页面 bun-x:别名页机制与 bunx 包执行器实战解析

文档教程知识库 【免费下载链接】tldr Collaborative cheatsheets for console commands 📚. 项目地址: https://gitcode.com/GitHub_Trending/tl/tldr 点击查看 免费下载 本篇文章以 tldr 仓库中的保加利亚语(bg)别名页面 pages…

2026/10/10 2:06:50 阅读更多 →
PHP抽象类 介绍

PHP抽象类 介绍

前言 抽象类(abstract class)在 PHP 里是一个折中产物:它一半是契约、一半是实现。用 abstract 修饰的类不能被实例化,它可以包含没有方法体的抽象方法(强制子类去实现),也可以包含完整实现的普…

2026/10/10 2:06:50 阅读更多 →
农水人写毕业论文别硬扛!从灌区试验到降重,这套AI组合帮你少熬大夜 [特殊字符]

农水人写毕业论文别硬扛!从灌区试验到降重,这套AI组合帮你少熬大夜 [特殊字符]

学农业水利工程的同学应该都懂,咱们的毕业论文很少是纯“坐图书馆查资料”就能写完的。比如很多同学会做这样一个题目:河套灌区玉米膜下滴灌条件下土壤水盐运移规律及作物响应研究。 你可能要布置田间试验,监测土壤含水率、电导率、地下水位&…

2026/10/10 2:06:50 阅读更多 →
英语写作批改工具怎么挑?2026年最新这5款别踩坑

英语写作批改工具怎么挑?2026年最新这5款别踩坑

英语写作批改这个事,我做了五年多,见过太多人踩坑了。有些老师兴冲冲买了个工具,用两周就扔一边,钱白花。也有人图便宜用免费的,结果批出来的东西还得自己重改一遍,反倒更累。选工具这件事,真不…

2026/10/10 2:06:50 阅读更多 →
OpenClaw + RK3576M 新媒体自动化实战:内容流水线搭建全流程

OpenClaw + RK3576M 新媒体自动化实战:内容流水线搭建全流程

2026 年,AI Agent 行业最大的尴尬,从来不是「能不能做出来 Demo」,而是「能不能落地到真实业务里」。市面上 90% 的 AI Agent 教程,都只停留在 Prompt 优化、工具链拼接的软件层面,却绝口不提一个核心事实:…

2026/10/10 2:05:50 阅读更多 →

日新闻

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

1. 从“卫星轨道分类”这个标题说起:为什么值得花时间搞懂第一次接触“卫星轨道分类”这个概念,很多人会觉得它离自己很远——不就是天上的星星怎么转吗?但如果你正在做航天任务规划、遥感数据接收、星座设计,甚至只是准备一场航天…

2026/10/10 0:00:39 阅读更多 →
Spring AOP 核心原理与实战:从概念到日志切面落地

Spring AOP 核心原理与实战:从概念到日志切面落地

1. 从一个真实痛点说起:为什么你的代码里到处都是重复逻辑刚入行那会儿,我写过一个用户管理模块,注册、登录、改密码、注销四个接口。每个接口里都塞了几乎一样的日志打印、参数校验、事务开启和提交。当时觉得没什么,能跑就行。直…

2026/10/10 0:00:40 阅读更多 →
Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

简介:这是一套面向计算机相关专业学生与项目实战学习者的Python数据采集与分析可视化完整项目,以Boss直聘岗位数据为对象,适合用作毕业设计、课程设计或期末大作业。资源包共38个文件,约246KB,以13个py源码文件为核心&…

2026/10/10 0:00:40 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 15:26:32 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 1:36:08 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 10:11:06 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/8 21:13:17 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/9 6:17:20 阅读更多 →