^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,清理现场,★_★。
自从写了这个脚本,手不酸了,手不疼了,手也不抽筋儿了,神清气爽,不要太爽哦!
- M
- m
- m,
- m
- m
- M
- ^M
- M
- m
- M
- M
- M
- M
- (?m)
- (?m)
- M
- M
- M
- Java解析JSON格式数据二
- <IOS>浅析本地存储
- 掌握 Ajax,第 5 部分: 操纵 DOM
- 《数据结构》第3章 栈和队列 知识点总结导图
- java自学日记五(特殊类及编解码问题)
- ^M
- 技术是什么
- &&的短路特性
- C++ 获取文件夹下的所有文件名
- Sending email - UVa 10986 Dijkstra+优先队列优化
- 不使用sizeof求int或者其他类型占用的字节数
- 掌握 Ajax,第 6 部分: 建立基于 DOM 的 Web 应用程序
- 浅析 Legacy INT 13h中断函数
- android 焦点控制及运用