精华内容
下载资源
问答
  • linux下,有时我们用vi打开一些windows下编辑过的文本文件,我们会发现文件的每行(或某些行)结尾都会有一个^M符号(不限于此,有时其他程序生成的文件也可能有此符号),这可能是因为dos下的编辑器和linux下的编辑器...

    在linux下,有时我们用vi打开一些windows下编辑过的文本文件,我们会发现文件的每行(或某些行)结尾都会有一个^M符号(不限于此,有时其他程序生成的文件也可能有此符号),这可能是因为dos下的编辑器和linux下的编辑器对文件行末的回车符处理不一致所致,也可能是生成文本文件的程序编写有问题所致。

    对于回车符的定义:

    windows:0D0A

    unix/linux: 0A

    MAC: 0D

    比较快捷的去除这些符号的方法有这么几种:

    1、是用vi的命令:

    使用vi打开文本文件

    vi dos.txt

    命令模式下输入

    :set fileformat=unix

    :w

    注:该方法不能保证一定有效。

    2、vi下使用正则表达式替换   g/^M/s/^M//    或者   %s/^M//g3、使用sed 工具    sed ’s/^M//’ filename > tmp_filename4、既然window下的回车符多了‘ ’,那么当然通过删除‘ ’ ,也可以实现:    tr -d " "5、最后一个方法是最便捷也最有效的方法    在终端下输入命令:    $ dos2unix filename    直接就可以转换成unix格式!

    展开全文
  • linux写echo写入文件与sed写入文件

    千次阅读 2019-02-27 20:36:27
    一、echo写入文件 echo写入文件有两种模式,一种是覆盖写入,一种是追加写入 覆盖写入是在文件末尾,另起一行,将字符串写入文件 追加写入 [aizhiwenben@web01 ~]$ touch b.txt [aizhiwenben@web01 ~]$ echo "...

    一、echo写入文件

    echo写入文件有两种模式,一种是覆盖写入,一种是追加写入
    覆盖写入是在文件末尾,另起一行,将字符串写入文件
    追加写入

    [aizhiwenben@web01 ~]$ touch b.txt 
    [aizhiwenben@web01 ~]$ echo "11111" >> b.txt 
    [aizhiwenben@web01 ~]$ echo "aaaaa" >> b.txt 
    [aizhiwenben@web01 ~]$ cat b.txt 
    11111
    aaaaa
    

    覆盖写入

    [aizhiwenben@web01 ~]$ echo "aaaaa" > c.txt 
    [aizhiwenben@web01 ~]$ echo "11111" > c.txt 
    [aizhiwenben@web01 ~]$ cat c.txt 
    11111
    

    echo 加入 -e 参数可以让我们写入换行符等字符,比如写一个批处理文件

    [aizhiwenben@web01 ~]$ echo "#\!/bin/bash\necho 'hello'" > d.sh
    [aizhiwenben@web01 ~]$ cat d.sh 
    #\!/bin/bash\necho 'hello'
    [aizhiwenben@web01 ~]$ echo -e "#\!/bin/bash\necho 'hello'" > d.sh
    [aizhiwenben@web01 ~]$ cat d.sh 
    #\!/bin/bash
    echo 'hello'
    [aizhiwenben@web01 ~]$ chmod +x d.sh 
    [aizhiwenben@web01 ~]$ ./d.sh 
    hello
    

    二、sed写入文件

    参考:https://www.cnblogs.com/edwardlost/archive/2010/09/17/1829145.html
    sed 命令允许通过非交互方式修改文件内容,在docker中会经常使用
    命令:

    sed -选项   ' 地址 命令 字符'  文件名
    

    比如一个文件
    选项我一般用两个, -i 使修改生效 -n 不显示默认输出
    比如,修改文件第一行:

    [aizhiwenben@web01 ~]$ sed -i '1c\#!/bin/bash' a.txt 
    [aizhiwenben@web01 ~]$ cat a.txt 
    #!/bin/bash
    sd
    f
    sad
    f
    as
    d
    f
    as
    df
    asd
    fas
    

    删除第2,3行

    [aizhiwenben@web01 ~]$ sed -i '2,3d' a.txt 
    [aizhiwenben@web01 ~]$ cat a.txt 
    #!/bin/bash
    sad
    f
    as
    d
    f
    as
    df
    asd
    fas
    

    在第2行后添加字符串

    [aizhiwenben@web01 ~]$ sed -i '2a\11111111111111' a.txt 
    [aizhiwenben@web01 ~]$ cat a.txt 
    #!/bin/bash
    sad
    11111111111111
    f
    as
    d
    f
    as
    df
    asd
    

    这里的行就是地址,a\ c\ d 就是命令 a\ c\ 后面就是要替换或增加的字符串
    sed 命令

    命令功能
    a\在当前行后添加一行或多行。多行时除最后一行外,每行末尾需用“\”续行
    c\用此符号后的新文本替换当前行中的文本。多行时除最后一行外,每行末尾需用"\"续行
    i\在当前行之前插入文本。多行时除最后一行外,每行末尾需用"\"续行
    d删除行

    地址除了可以写行号,还可以写正则表达式,用/ /之间的元字符表示

    元字符功能示例
    ^行首定位符 /^my/匹配所有以my开头的行
    $行尾定位符 /my$/匹配所有以my结尾的行
    .匹配除换行符以外的单个字符 /m…y/匹配包含字母m,后跟两个任意字符,再跟字母y的

    其实与正则表达式差不多

    展开全文
  • python delete_M.py 路径 可用于删除指定Linux路径下的文件中的^M 此问题绝大部分是由文档在从windows传输到Linux导致的
  • Linux下文本文件中 M 符号问题的解决

    首先给大家分享一个巨牛巨牛的人工智能教程,是我无意中发现的。教程不仅零基础,通俗易懂,而且非常风趣幽默,还时不时有内涵段子,像看小说一样,哈哈~我正在学习中,觉得太牛了,所以分享给大家!点这里可以跳转到教程

                   
    关于回车与换行,有些人就认定没必要用两个字符来表示行尾。UNIX 开发者决定他们可以用一个字符来表示行尾,Linux沿袭Unix,也是。Apple 开发者规定了用.开发 MS-DOS以及Windows 的那些家伙则决定沿用老式的.
    三种行尾格式如下:
    unix : n
    dos : rn
    mac : r
    这意味着,如果你试图把一个文件从一种系统移到另一种系统,那么你就有换行符方面的麻烦。
    因为MS-DOS及Windows是回车+换行来表示换行,因此在Linux下用Vim查看在Windows下写的代码,行尾后“^M”符号。 www.2cto.com
    在vi中解决这个问题,很简单,在vi中利用替换功能就可以将“^M”都删掉,键入如下替换命令行:
    :%s/^M//g  或者  :%s/^M   这两个效果是一样的,
    注意:
    上述命令行中的“^M”符,不是“^”再加上“M”,而是由“Ctrl+v”、“Ctrl+M”键生成的,或者Ctrl+v,再按回车。
    或者使用这个命令:
    :% s/r//g

    可以用以下方法快速的解决:

     

    解决方法1:
    在命令模式下:输入:%s/^M//g 然后,回车即可替换

    注,其中"^M"的输入,分别是“Ctrl+v”、“Ctrl+M”键生成的

     

    解决方法2: 

    使用vi打开文本文件
        vi dos.txt
        命令模式下输入
        :set fileformat=unix
        :w

    解决方法3:

    使用sed 工具
        sed ’s/^M//’ filename > tmp_filename

    解决方法4:

    既然window下的回车符多了‘\r’,那么当然通过删除‘\r’ ,也可以实现:
        tr -d '\r'

    解决方法5(最常用的方法)

        在终端下敲命令:
        $ dos2unix filename
        直接转换成unix格式,就OK了!~

    解决方法6:
    把代码用Notepad++打开,然后新建一个文件,把这个代码复制过去就OK了,当新建一个文件时候,Notepad++会自动解决回车换行等问题。

               

    浏览人工智能教程

    展开全文
  • Linux文本中出现^M的解决办法

    千次阅读 2019-01-26 13:31:00
    在windows系统下新建了某文本,linux系统使用命令读取该文本的内容进行追加时出现^M标记 问题分析 在DOS/Windows里,文本文件的换行符为\r\n,而在*nix系统里则为\n,所以DOS/Windows里编辑过的文本文件到...

    问题来源

        在windows系统下新建了某文本,linux系统中使用命令读取该文本中的内容进行追加时出现^M标记

    f0718d5cf795c2dac0d644c3fef4baf30a1.jpg

    问题分析

        在DOS/Windows里,文本文件的换行符为\r\n,而在*nix系统里则为\n,所以DOS/Windows里编辑过的文本文件到了*nix里,每一行都多了个^M

    问题处理

    方法一

        在vi中命令模式下进行文本替换

        :%s/\r//g

    方法二

        转化文件格式为Unix格式

    # dos2unix $FILE_NAME

    方法三

        转换并生成新的文件

        # cat $FILE_NAME | tr -s "\r\n" "\n" > $NEW_FILE

    转载于:https://my.oschina.net/comics/blog/3006218

    展开全文
  • linux查看文本文件命令 我最近阅读了Scott Nesbitt的文章“ 在Linux命令行上使用更少的功能来查看文本文件 ”,并受到启发,分享了我less使用的其他提示和技巧。 少环境 如果您定义了一个环境变量LESS (例如,...
  • # 从大文本文件提取前100行到新文本文件 head -100 bigFilename.log > sample.log
  • 今天帮同事用Python了一个小工具,实现了在linux下批量文件名和去掉windows 文件linux过程产生^M的脚本,代码如下: #!/opt/exptools/bin/python import os,os.path,sys import shutil,string dir ='/home/...
  • 在Windows环境编写的sh脚本的“换行符”,在Linux环境会识别成^M符号。当使用sh脚本保存文件时,其文件名后缀会出现“?”,导致文件不能读取。 解决方法 采用sed命令去除^M符号,在命令行输入: sed -i ...
  • linux查找文本文件

    千次阅读 2018-12-20 15:19:15
    在使用linux时,经常需要进行文件查找。其中查找的命令主要有find和grep。两个命令是有区的。  区别:(1)find命令是根据文件的属性进行查找,如文件名,文件大小,所有者,所属组,是否为空,访问时间,修改时间等...
  • Linux内核读写文件

    万次阅读 2016-07-11 14:13:56
    Linux内核读写文件数据的方法     有时候需要在Linuxkernel--大多是在需要调试的驱动程序--读写文件数据。在kernel操作文件没有标准库可用,需要利用kernel的一些函数,这些函数主要有: filp_open() ...
  • Remove CTRL-M characters from a file in UNIX Description  How to remove CTRL-M characters from a file in UNIX. You may need to do this when you import a text file from MS-DOS (or MS-Windows), ...
  • Linux 文件末尾包含^M字符

    千次阅读 2017-10-14 19:56:31
    当我们把文件从Windows传到Linux环境时候,常常在每一行的末尾,会出现一些 ^M的字符.而这些字符会影响文件的正常读写和执行。 二、处理方法: 1、要去掉这些'^M'字符,有很多种办法,比如直接dox2unix【命令:dos2...
  • Linux下文本文件中^M 符号问题的解决

    万次阅读 2015-12-20 09:56:25
    UNIX 开发者决定他们可以用一个字符来表示行尾,Linux沿袭Unix,也是。Apple 开发者规定了用.开发 MS-DOS以及Windows 的那些家伙则决定沿用老式的. 三种行尾格式如下: unix : n dos : rn mac : r 这意味着,...
  • Linux 查询结果写入文件

    千次阅读 2010-07-15 14:14:43
    Linux命令模式下,可以将查询结果写入文件。大概有两种方式,增量写入和覆盖写入。   增量写入:  #iostat -m >> /tmp/iostat.txt   覆盖写入:  #iostat -m > /tmp/iostat....
  • linux将当前时间写入文件

    万次阅读 2016-08-03 10:26:37
    #!/bin/bash echo `date +"%Y-%m-%d %H:%M:%S"` begin >> ./a.log
  • linux读写文件速度测试

    千次阅读 2009-02-13 13:21:00
    一. 文件一次读入速度linux下读文件这东西最后都是要通过系统调用sys_read(fd,buf,count)来实现的,所以如果要提高速度,...首先创建一个130M数据文件 dd if=/dev/zero of=data bs=1024k count=130分别用fread,read和f
  • Linux 文本文件及处理

    2019-01-21 12:02:17
    提到文本文件大家可能想到windows下的txt文件,除此之外呢? 在linux下有哪些文本信息呢? 程序源文件 标准输入输出 普通文本文件 配置文件 文本型网络协议? 因特网大部分传输层以上协议是文本型...
  • Linux下去掉^M

    2020-08-24 11:32:47
    M字符的来历和作用:在DOS/Windows里,文本文件的换行符为\r\n,而在*nix系统里则为\n,所以DOS/Windows里编辑过的文本文件到了*nix里,每一行都多了个M。所以^M只是一个换行符号,没有实际的用处,我们可以将它保留...
  • 我在Linux服务器(内核2.6.37,16核心,32G内存)上的2个文件系统之间复制大文件(3 x 30G),而且性能下降。我怀疑缓冲区缓存的使用是否会影响I/O性能。Linux缓冲区缓存对IO写入的影响?我了一个小C程序来复制这个问题...
  • linux中文件里行尾奇怪的^M及解决

    千次阅读 2017-08-04 11:25:48
    Linux编辑器vim中删除行尾的^M  有时候,在 Linux 中使用... 在 Vim 的命令模式中输入 :%s/^M$//g 后,回车即会自动删除该文件中的所有 ^M 字符。  注意: ^M 要用 Ctrl + v, Ctrl + m 来输入, 用键盘直接
  • 在windows中写的脚本执行完全没问题,代码一模一样,切换到linux中执行报错。利用命令 “vi/vim -b 文件名”查看文件发现每行结尾多了“^M”这样的结尾。 根源 通过查询得知,其问题根源是windows和linux换行符...
  • Linux把查询结果写入文本

    千次阅读 2013-08-01 09:32:00
    Linux命令模式下,可以将查询结果写入文件。大概有两种方式,增量写入和覆盖写入。 增量写入: #iostat -m >> /tmp/iostat.txt 覆盖写入: #iostat -m > /tmp/iostat.txt 转载于:...
  • Linux 环境下文件写入 img

    千次阅读 2018-11-15 15:33:06
    Linux 环境下文件写入 img
  • linux:windows转linux文档错误^M

    千次阅读 2016-08-26 16:04:24
    将Windows文本文件传到Linux后,会在每行的末尾多出一个^M符号。当进行Shell编程时,该符号可能会导致正则表达式匹配失败。如果想去掉这个符号可以使用dos2unix命令。当然如果想恢复为Windows下的模式可以使用...
  • 在开发过程,有时候Linux系统文件行末尾出现^M,对于不同系统,有不同的换行符号: 在windows下的文本文件的每一行结尾,都有一个回车(’\n’)和换行(’\r’) 在linux下的文本文件的每一行结尾,只有一个回车...
  • linux下的文本文件的每一行结尾,只有一个回车(’\n’); 在Mac下的文本文件的每一行结尾,只有一个换行(’\r’); 因此:^M出现的原因: 在linux下打开windows编辑过的文件,就会在行末尾显示^M; 对此的解决办法...
  • Linux 替换^M字符方法

    千次阅读 2016-08-29 10:13:11
    最近遇到一个通过windows上传文本数据到linux服务器,但是读取数据文件时,因为每行数据后面出现^M字符,导致通过程序读取数据失败,希望把^M字符替换成换行字符,所以对这一块仔细研究了下。网上的方法很多,也很杂...
  • linux vi ^M 是什么

    2012-05-21 10:38:15
    Windows等操作系统用的文本换行符和UNIX/Linux操作系统用的不同,Windows系统下输入的换行符在UNIX/Linux下不会显示为“换行”,而是显示为 ^M 这个符号(这是Linux等系统下规定的特殊标记,占一个字符大小,不是 ^ ...
  • 测试结果如下: 写入文件大小至1340M左右时,每写入10M数据所需时间从2ms增加至约20ms。 写入文件大小至8230M左右时,每写入10M数据所需时间从20ms增加至约400+ms。 测试结论: 1. 写入相同大小的数据,写入的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 456,196
精华内容 182,478
关键字:

linux写入文本m

linux 订阅