linux下文件特殊字符处理

本文探讨了在Windows下编辑的文件放到Linux环境下执行时出现的特殊字符问题,包括^M和BOM标记,并提供了相应的sed命令解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在windows下编辑的文件,放到linux下执行经常会出现各种莫名其妙的问题,用vim打开查看文件,会看到一些特殊字符,常见的有
1. ^M 
该字符出现在一行文本的结尾,出现的原因是windows使用CR(回车\r)LF(换行\t)两个字符来作为一行文本的结束符号,而linux下是使用LF单个字符作为单行文本结束,因此在windows下编辑过的文本中如果使用过回车来换行,在linux下就会出现^M字符,可以用如下命令来消除:
sed -i  's/\r//g' fileName
-i 表示在原始文件中直接修改,重定向则可以用:
sed 's/\r//g' oldFileName > newFileName

2. BOM
该字符是由于在windows下编辑的文件,采用utf作为编码格式保存时,编辑器会在文件开头添加一个BOM标记(Byte Order Mark)来标识utf编码所采用的字节序,使用如下命令可以看到文件头的BOM字符:
cat fileName | head -1 | sed -n l

而我们经常采用的utf-8采用单字节编码,因此不存在字节序的问题,而BOM在linux中处理又会存在各种问题,因此可以采用如下命令去除文件中的BOM标记:
sed -i 's/^\xEF\xBB\xBF//;' fileName
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值