linux处理 ^M

 在linux下,不可避免的会用VIM打开一些windows下编辑过的文本文件。我们会发现文件的每行结尾都会有一个^M符号,这是因为 DOS下的编辑器和Linux编辑器对文件行末的回车符处理不一致。

 删掉所有的^M的方法有:
1.使用vim打开文件 ,命令模式下输入:set fileformat=unix ,然后:w退出。
2.利用正则表达式,使用vim打开文件,输入 :

vim切换到命令模式,然后
  “ : %s/^M$//g ”    
                           % 指匹配整个文件
                           s 是置换的意思
                          ^M 要用ctrl+v+m 组合键敲入
                           $ 表示匹配行尾的内容
                           g 表示每行中匹配到的内容都要置换
//或者
: %s/^M//g
: %s/\r//g

3.直接在终端下输入:

dos2unix filename  //直接将file转换为unix下的文件格式,但是有的系统不支持这条命令。

注:查看文件编码格式并设置:进入vim命令模式:

set fileencoding   //查看
//设置set fileencoding=utf-8
Linux 系统中,`^M` 符号通常出现在从 Windows 系统中转移过来的文本文件中。这是由于 Windows 和 Linux 系统对换行符的定义不同:Windows 使用 `\r\n`(回车+换行),而 Linux 使用 `\n`(换行)[^1]。当在 Linux 中打开这些文件时,多余的 `\r`(显示为 `^M`)可能会干扰脚本执行或影响文件的可读性。 ### 查看文件中的 `^M` 符号 1. **使用 `cat -A` 查看隐藏字符** 通过 `cat -A` 命令可以查看文件中的隐藏字符,包括 `^M`。 ```bash cat -A filename ``` 这会将文件中的 `^M` 显示为 `^M$` 或类似的格式[^2]。 2. **使用 `grep` 检查是否存在 `^M`** 通过 `grep` 可以查找文件中是否包含 `^M` 字符。 ```bash grep -r "^M" filename ``` 这里 `^M` 的输入方式是按住 Ctrl 键后先按 V 再按 M。 3. **使用 `vi/vim` 编辑器查看** 在 `vi` 或 `vim` 中打开文件后,如果文件中存在 `^M`,通常会在每行的末尾看到 `^M` 字符[^3]。 ### 处理文件中的 `^M` 符号 1. **使用 `dos2unix` 命令** `dos2unix` 是一个专门用于将 Windows 格式的文件转换为 Linux 格式的工具。 ```bash dos2unix filename ``` 这会直接将文件转换为 Linux 换行格式,清除所有 `^M` 字符[^3]。 2. **使用 `sed` 命令替换 `^M`** 可以使用 `sed` 命令将文件中的 `^M` 替换为空。 ```bash sed -i 's/^M//g' filename ``` 注意:输入 `^M` 时需要在终端中按 Ctrl + V 后再按 Ctrl + M[^2]。 3. **使用 `vi/vim` 删除 `^M`** 在 `vi` 或 `vim` 中打开文件后,可以使用以下命令批量删除 `^M`: ```vim :%s/^M//g ``` 输入 `^M` 的方式同样是先按 Ctrl + V,再按 Ctrl + M[^3]。 4. **使用 `tr` 命令删除 `\r`** 因为 `^M` 实际上是 `\r`(回车符),所以可以通过 `tr` 命令将其删除。 ```bash cat filename | tr -d '\r' > newfile ``` 这将生成一个没有 `^M` 的新文件[^2]。 5. **使用 `vi` 设置文件格式为 `unix`** 在 `vi` 中打开文件后,可以设置文件格式为 `unix` 并保存。 ```vim :set fileformat=unix :w ``` 这将自动清除文件中的 `^M` 符号。 ### 总结 处理 `^M` 符号的关键在于理解 Windows 和 Linux 系统在换行符上的差异。通过 `cat -A` 可以查看文件中的 `^M`,而使用 `dos2unix`、`sed`、`vi` 或 `tr` 等工具都可以有效清除这些符号,确保文件在 Linux 环境下正常运行。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值