windows下编辑过的文件在Linux下用vi打开行尾会多出一个^M符号

一般情况下,windows下编辑过的文件在Linux下用vi打开行尾会多出一个^M符号,如下图:

这是因为Windows等操作系统用的文本换行符和UNIX/Linux操作系统用的不同,Windows系统下输入的换行符在UNIX/Linux下不会显示为“换行”,而是显示为 ^M 这个符号(这是Linux等系统下规定的特殊标记,占一个字符大小,不是 ^ 和 M 的组合,打印不出来的)。

可以使用下面几种方法处理:

1.使用vi的替换功能。启动vi,进入命令模式,输入以下命令:
:%s/^M$//g # 去掉行尾的^M。

:%s/^M//g # 去掉所有的^M。

:%s/^M/[ctrl-v]+[enter]/g # 将^M替换成回车。

:%s/^M//r/g # 将^M替换成回车。
注意:这里的“^M”要使用“CTRL-V CTRL-M”生成,而不是直接键入“^M”。
2.如果是xml文件,可以使用xmllint格式化xml文件,去掉^M:xmllint --format test.xml
时间: 2024-08-22 01:24:47

windows下编辑过的文件在Linux下用vi打开行尾会多出一个^M符号的相关文章

windows下的批处理bat文件和Linux下的shell文件的互相转换(持续更新)

shell(Linux.Solaris) bat(windows) 含义 # rem 注释行 /[directory]/[directory]/.../[directory]/ [disk]:\[directory]\[directory]\...\[directory]\ path [变量]=[文件名],LBSAM set [变量]=[文件名],BSAM 把文件名赋值给变量 [变量]=[设定值] [变量]="[设定值]" [变量]='[设定值]' [变量]=[设定值]; export

windos 下的文件在 linux 下出现 ^M 及解决办法

1.windows 下编辑好的文件 asm_compile.txt,在 linux 下显示如下: $ cat -v asm_compile.txt 1) ml.exe /c /coff /I d:\masm32\include reg_test.asm^M 2) link.exe /subsystem:windows /libpath:d:\masm32\lib reg_test.obj^M ^M 2.解决办法 $ tr -d '\r' < asm_compile.txt > new_comp

JAVA生成文件在linux下文件名乱码

TOMCAT + Java + Linux 问题描述 在JAVA中生成文件,文件名生成在windows下就正常,但是在linux下生成就乱码. 解决方式 代码中文件名用这样的方式转换 String remoteFileName = new String(sendModel.getString("fileName").getBytes("GBK"), System.getProperty("sun.jnu.encoding")); 顶

Windows命令行(cmd)下快速查找文件(类似Linux下find命令)

for /r 用法简介 用了Linux下的find命令,觉得查找文件很方便,那么在windows下有没有类似的命令可以遍历目录并通过文件名找到文件呢?答案是有: Windows下的 for /r 命令具有与Linux下 find 命令类似的功能,使用语法上类似: find /r 目录名 %变量名 in (匹配模式1,匹配模式2) do 命令 匹配模式可以是通配类似于: *.jpg:所有.jpg后缀的文件 *test*:所有名称中包含test的文件 注意: 1. 匹配模式中至少带上1个*号 2.

windows下编写的Shell脚本在Linux下运行错误的解决方法

出现这种错误的原因:CR/LF问题,在dos/window下按一次回车键实际上输入的是“回车(CR)”和“换行(LF)”,而Linux/unix下按一次回车键只输入“换行(LF)”,所以修改的sh文件在每行都会多了一个CR,所以Linux下运行时就会报错找不到命令. 两种解决方法: 1.将格式转换为UNIX,“编辑->格式转换(CR/LF)->UNIX”,这样Linux下就能按unix的格式保存文件 2.在vim中,输入:set ff=unix,然后:wq,同样也是转换成unix的格式 cat

[moka同学笔记]window下.htacess文件 与linux下.htacess文件

windows下 # Turn on URL rewritingRewriteEngine On # Installation directoryRewriteBase / # Protect hidden files from being viewed<Files .*>    Order Deny,Allow    Deny From All</Files> # Protect application and system files from being viewedRewr

windows下的txt格式转换成linux下的TXT

存在的问题是 多出一个方框或者黑格子 主要是因为bash 不能忽略windows的问题 用sed 命令来处理,分别是windows转linux,linux转windows sed -e 's/.$//' mydos.txt > myunix.txt sed -e 's/$/\r/' myunix.txt > mydos.txt

Linux下使用shell实现上传linux下某个目录下所有文件到ftp

首先我们需要搞清楚单个文件怎么上传,把这个单文件上传到ftp上的实现命名为一个:upload_to_ftp_command.sh 之后,需要弄清楚怎么实现遍历一个目录下的所有文件的,把这个遍历某个目录下的文件实现命名为:foeach_directory_and_uploadfile_to_ftp.sh. upload_to_ftp_command.sh #!/bin/bash FTILE_NAME=$1 ftp -n <<- EOF open 100.170.141.26 user jy ne

windows下用navicat远程链接虚拟机Linux下MySQL数据库

今天想用navicat远程连接虚拟机中的MySQL数据库,一直连不上,在网上搜索了一下,发现原因是MySQL对远程用户登陆的授权问题.这里说一下我的解决方法.(本人小白) 首先,我用navicat去远程链接我虚拟机中的MySQL,链接测试失败. 然后在虚拟机中查看网络端口信息: #netstat -ntpl 之后查看了防火墙的状态,发现3306端口的数据包都是丢弃状态 #iptables -vnL 这里要清除防火墙中链中的规则 #iptables -F 在这之后,我又远程链接了一下MySQL,出