linux下的文本dos格式转unix格式,去除^M符号

今天工做在处理批量查询的统计需求,因为原始数据是从execl拷贝的文本,经过shell去分析这批数据。等待好久后去取结果,发现查询导出后的数据为空,这下郁闷至极(还有不少事情要作)。首先质疑shell脚本把全部执行记录的sql语句都echo到一个文本中发现全部导出来的每条查询记录都被分红两行,刚开始还没意识到^M的惹的祸,反反复复去调整shell脚本,以至于将shell脚本改为负担最重的全记录搜索,没加任何条件。(也许是太多事情压着要作,那时脑子不够冷静没有去抓问题主因),问题依旧没获得解决,崩溃。最后单独拿出一条记录出来分析,仔细一看echo出来的sql记录有^M,无语。。。。。。(我怎么会把^M这个问题给忽视了,真应该自我鄙视下,难道莫不是总要吃次亏)。最后打紧sed -i “s/^M//g”替换掉,从新开搞。感叹本身最近一段时间的状态的确很差,总是感受很烦躁,是真须要调节下。
在网上又搜索到一篇将UNIX和WINDOWS间的换行转换的文章,学习补充下:
语法
dos2unix [-kn] file [newfile] 从DOS转换到UNIX
unix2dos [-kn] file [newfile] 从UNIX转换到DOS也就是WINDOWS
-k : 保留该文档原来的 mtime 时间 (不更新文档上次内容通过修改的时间)
-n : 保留原来的文档,将转换后的内容输入到新文档中 例如: dos2unix -n old new
范例以下:sql

$cat -v killws
#!/bin/bash^M
admin_dir="/home/admin"^M
function check_user {^M
 if [[ `whoami` != "admin" ]];then^M
 echo "Apache only can start by admin user,exit!"^M
 exit^M
 fi^M
}^M

$dos2unix -k killws
dos2unix: converting file killws to UNIX format ...
$cat -v killws
#!/bin/bash
admin_dir="/home/admin"
function check_user {
 if [[ `whoami` != "admin" ]];then
 echo "Apache only can start by admin user,exit!"
 exit
 fi
}

还有一种转换方法:
直接 vim file 输入set ff=unix.保存退出!shell

 

——————End——————vim

相关文章
相关标签/搜索