【整理】如何取消Linux下,vi中显示的^M符号

【背景知识】

^M 是ascii中的'\r', 回车符,是16进制的0x0D,8进制的015,十进制的13。

对于换行这个动作,unix下一般只有一个0x0A表示换行,windows下一般都是0x0D和0x0A两个字符。

另外:^L 是ascii 0x0C '\f', 换页控制符。

而对于Linux 的vi,有些版本,比如我当前开发板里面的vi,是用busybox编译出来的,不能识别windows下面编辑的,带0x0D的那些文本文件,所以,你在windows下面编辑一个普通的文本文件,如果里面有换行,那么在Linux的vi里面,对应的那个0x0D就会显示出一个^M,比如:

1. led on & off^M

eg.^M

echo none > /sys/class/leds/led_green/trigger^M

echo 1 > /sys/class/leds/led_green/brightness^M

echo > /sys/class/leds/led_green/brightness^M

Note: the default switch of trigger is [none]^M

2. heartbeat flash^M

eg.^M

echo heartbeat > /sys/class/leds/led_green/trigger^M

3. timer flash^M

eg.^M

echo timer > /sys/class/leds/led_green/trigger^M

echo 5 > /sys/class/leds/led_green/delay_on^M

echo 5 > /sys/class/leds/led_green/delay_off^M

每行最后都有一个^M,很是难看,所以想要去掉。

注:普通PC版本的Linux,好像可以很好地识别了,比如我的Linux服务器,OpenSUSE下面的某个版本vi的,可以很好地显示那些windows下面编辑的,带0x0D的回车换行符,不能出现^M。

此外,关于ASCII字符,Linux下面有个简要的介绍:

[crifan@linux-41lh wi-fi]$man ascii

ASCII(7)                                            Linux Programmer's Manual                                           ASCII(7)

NAME

ascii - the ASCII character set encoded in octal, decimal, and hexadecimal

DESCRIPTION

ASCII is the American Standard Code for Information Interchange. It is a 7-bit code. Many 8-bit codes (such as ISO8859-1, the Linux default character set) contain ASCII as their lower half. The international counterpart of ASCII isknown as ISO 646.

The following table contains the 128 ASCII characters.

C program '\X' escapes are noted.

Oct   Dec   Hex   Char                        Oct   Dec   Hex   Char

------------------------------------------------------------------------

000   0     00    NUL '\0'                    100   64    40    @

001   1     01   SOH (start of heading)      101   65    41    A

002   2     02    STX (start of text)         102   66    42    B

003   3     03    ETX (end of text)           103   67    43    C

004   4     04    EOT (end of transmission)   104   68    44    D

005   5     05    ENQ (enquiry)               105   69    45    E

006   6     06    ACK (acknowledge)           106   70    46    F

007   7     07    BEL '\a' (bell)             107   71    47    G

010   8     08   BS '\b' (backspace)        110   72    48    H

011   9     09    HT '\t' (horizontal tab)   111   73    49    I

012   10    0A    LF '\n' (new line)         112   74    4A    J

013   11    0B    VT '\v' (vertical tab)     113   75    4B    K

014   12    0C    FF '\f' (form feed)        114   76    4C    L

015   13    0D    CR '\r' (carriage ret)     115   77    4D    M

016   14    0E    SO (shift out)             116   78    4E    N

017   15    0F    SI (shift in)              117   79    4F    O

。。。。。。。。。。。

【如何消除vi中的^M】

我刚开始去用sed命令:

sed 's/^M//g' file_old > file_new

不成功,输出的文件,用vi打开,还是带^M。

后来到网上搜到了可以用的办法,用tr命令:

tr -d "\015" < myfile.txt > myfile_new.txt

可以把符号^M(即"\015")去掉,并另存为新文件myfile_new.txt

【后记】

根据别人的建议,知道了还有个专门的工具dos2unix和unix2dos,用于处理这方面的事情,详情参考:

【转】dos2unix和unix2dos命令使用

其用法很简单,直接使用即可:

dos2unix file_name

这样就可以把该文件里面的0x0D去掉了,只保留0x0A。

【引用】

1。如何取消vi中显示的^M符号

2。Linux 下用程序新建的文件中出现^M字符,如何消除??

http://www.linuxforum.net/forum/printthread.php?Cat=&Board=program&main=32848&type=thread

3。[请教]用vi编辑文本时出现的^M和^L代表什么?

http://www.linuxsir.org/bbs/thread305370.html

php文件内含有隐藏的^m字符,【整理】如何取消Linux下,vi中显示的^M符号相关推荐

  1. linux配置apache文件大小,linux下apache中httpd.conf文件配置参数说明

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 linux下的apache服务器,我想大家都不陌生吧,前面我也有讲过apache服务器的配置及注意,今天57号网络技术分享平台的小编将为大家带来apach ...

  2. c++字符加密_linux安全Linux下RAR加密解密

    网络拓扑:Linux下RAR加密解密主机用户名:root   密码:123456第一步.打开网络拓扑,进入H-xclient-rar--1虚拟机. 第二步.创建实验文件test.txt,文件内容&qu ...

  3. linux下vi修改文件用法

    进入vi的命令  vi filename :打开或新建文件,并将光标置于第一行首  vi +n filename :打开文件,并将光标置于第n行首  vi + filename :打开文件,并将光标置 ...

  4. linux vi命令操作实例,Linux下Vi替换字符命令操作实例

    在Linux下的开发中,经常涉及到对文件中的字符进行处理,其中,对字符的替换操作也是非常的频繁.本文以一个实际的文件为例,详细 在Linux下的开发中,经常涉及到对文件中的字符进行处理,其中,对字符的 ...

  5. linux 下vi进行文件编辑

    用 vi 进行文件编辑 原地址:http://hi.baidu.com/guolele17080/item/8f36bc09d2803e14acdc7055 使用 vi vi 编辑器几乎在所有 Lin ...

  6. linux中用vi读文件夹,linux下vi与vim编辑器的简单区别及VI详细使用方法

    vi与vim一样都是编辑器,不同的是vim更高级一些,可以理解是vi的高级 版本.vi就像Windows中的计事本,而vim则可以算的上是 office中的word.vi主要用来编辑一些文件,vim是 ...

  7. Linux下ll 命令显示的文件类型

    Linux下可以用ll 命令来判断文件类型,主要是根据每行的首个字符来判断. -rw-r-r-   "-"开头的都是普通文件: drw-r-r-   "d"开头 ...

  8. linux下Makefile中包含有shared library动态链接库文件时候的简单例子

    如果不知道什么是makefile,可以首先看我的另一篇博客: linux下Makefile的简单例子及解释 http://www.cnblogs.com/lihaozy/archive/2012/08 ...

  9. dat文件打开乱码_5.2 实战1:解决在Linux下打开Windows汉字文本的乱码问题

    今天MK继续来分享linux的学习文章,今天讲的主要是实战部分. 1.实验环境:CentOS 7.5 现在系统默认使用的语言是汉语.(系统中必须安装好中文包). 2.在windows系统上编辑名字为& ...

最新文章

  1. 现场丨李开复、李飞飞等大佬集聚达沃斯,解读中国的AI优势
  2. 新科技快速指南系列之“量子计算”:历史、现在与未来
  3. 有关IList 、List 使用Contains的问题
  4. CAPEX与OPEX
  5. websocket心跳链接代码_Hyperf+RabbitMQ+WebSocket实现大屏幕消息推送
  6. docker d盘_windows修改docker的默认存放位置
  7. 微软Azure storage account的connection string
  8. python 判断时间是否大于6点_python中判断时间间隔的问题
  9. 【转】ARC下dealloc过程及.cxx_destruct的探究
  10. 【ElasticSearch 学习笔记】Java API
  11. OpenCV——读取图片的数据类型必须是int8类型吗?
  12. visual studio 设计器不显示_嫦娥上升器为什么不设计成月球勘测器?
  13. 【Spark】sparksql中使用自定义函数
  14. 深度学习笔记(三)——GAN入门实现MNIST数据集
  15. 基于springboot的高校(学生)评教系统
  16. Android Studio开启DDMS查看手机文件
  17. hyper-v 网桥_使用网桥简化网络-使FIO ActionTec MI424-WR成为网桥
  18. Hapi.js 起步 - 写给前端开发的 Node Web 框架入门
  19. python游戏代码怎样才能玩好英雄联盟_怎样才能玩好英雄联盟-百度经验
  20. golang内幕之for-go-statement

热门文章

  1. LeetCode简单题之只出现一次的数字
  2. 在Cuda上部署量化模型
  3. 自动驾驶QNX,Linux,Autosar概述
  4. 用Microsoft DirectX光线跟踪改善渲染质量
  5. NVIDIA A100 GPUs上硬件JPEG解码器和NVIDIA nvJPEG库
  6. 2021年大数据Hadoop(四):Hadoop发行版公司
  7. Lumen / Laravel 使用网易邮箱 SMTP 发送邮件
  8. Windows 10系统中如何显示文件后缀名
  9. android 生成随机不相同的数
  10. elasticsearch 监控