^M

来源:互联网 发布:java中this关键字 编辑:程序博客网 时间:2024/04/28 15:32

       最近写了一个shell脚本,为了简化工作中的一个繁琐的操作。

       Windows系统编辑的文本文件放到Linux系统上通常会出现令人厌烦的”^M”。这是因为Windows下的换行是”\r\n”,而Linux下是”\n”。

       为了消灭这些令人烟花缭乱的^M,我之前的方法是借助于vim的”%s/^M//g”(^M使用Ctrl+ v + m键入)命令。

       工作中有这玩意儿的文件很多。这文件一多了,每个文件都要vim打开文件、输入命令、保存退出。额,所有文件都改完了,晚上睡觉手底下放个键盘,估计睡着了都能把这套命令给打出来,-_-!。

       这么折腾了几次后,我终于决定不能再忍,要借助工具来做这项繁琐、重复、手酸的工作,于是我想到了shell。shell下有很多高效强大的命令,借助几种命令的组合,就能完成我的需求。

       于是,如下的shell脚本诞生了:

       

#!/bin/bashfind $1 -type f ! -name $(basename $0) ! -name file_list > file_listwhile read linedo    cat ${line} | sed 's/^M//g' > ${line}     # 这里的^M依旧是用Ctrl + v + m键入。done < file_listrm -f file_list

       简单说明一下。思路很简单:

       1、我要知道要修改哪些文件。

       2、一个一个来,获取文件内容。

       3、把其中的^M全部“咔嚓”掉。

       4、把干净清爽的文件内容重新写回文件。

       5、还有谁?!如果有人回答,就回到第2步。

       于是第3行的find命令,就是在指定目录下查找所有待修改的文件,将查询结果存储在file_list文件中。在查找过程中,要排除shell脚本本身以及存放查询结果的文件。

       用cat命令读出文件内容,传递给sed让它去“咔嚓”^M,之后将清爽的文件内容重写入源文件。

       while循环中,”done < file_list”的写法就是一个一个文件来的意思。

       最后删除掉中间文件file_list,清理现场,★_★。

 

       自从写了这个脚本,手不酸了,手不疼了,手也不抽筋儿了,神清气爽,不要太爽哦!
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 苹果5s指纹按键坏了怎么办 小米手机安卓系统耗电量大怎么办? 苹果5s充不进去电怎么办 苹果手机6s返回键失灵怎么办 本人被骗同时被利用骗了别人怎么办 京东取消订单后货到了该怎么办 京东电信日租卡流量顶置了怎么办 苹果6s进水后闪光灯不亮怎么办 华为手机情景义停车事项过期怎么办 拼多多付款后商品下架了怎么办 淘宝上买化妆品买到假货了怎么办 找苹果官网解id发票丢了怎么办 客人已交订金但要取消宴席怎么办 京东买的小米电视碎屏了怎么办 京东购买的电视碎屏了怎么办 淘宝上买手机不能用不给退怎么办 天猫申请退货退款卖家不处理怎么办 在淘宝买到货到付款的假苹果怎么办 跟朋友买手机买到假货怎么办 在淘宝网上买到不合格的产品怎么办 淘宝打假师打了我的店铺怎么办 收藏品公司关门跑路员工怎么办 客户快递签收后说货物短缺怎么办 京东商城买东西商家不换货怎么办 在商场买东西过几天就降价了怎么办 天猫买东西不退货不退款怎么办 买买8p美版的怎么办 京东金条银行卡被冻结还不了怎么办 在瑞士刚买的浪琴手表不走了怎么办 刚买的手表表镜有划痕 怎么办 唯品会上买的手表有质量问题怎么办 我买的对方材料没开票给我怎么办 给对方修完车车主不给发票怎么办 买苹果手机花呗额度不够怎么办 苹果手机用别人的手机卡激活怎么办 小米商城花呗分期额度不够怎么办 淘宝已经形成订单商家不发货怎么办 小米商城退款后又想买了怎么办 淘宝退货退款后不想退了怎么办 在转转的商品被屏了怎么办 不懂如何挑选适合自己的衣服怎么办