^M

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

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

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

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

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

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

       

#!/bin/bash

find $1 -type f ! -name $(basename $0) ! -name file_list > file_list

while read line
do
    cat ${line} | sed 's/^M//g' > ${line}     # 这里的^M依旧是用Ctrl + v + m键入。
done < file_list

rm -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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值