shell技巧

sed删除空行(包括空格、特殊字符、tab等组成的空行)、换行符的方法&vim删除^M

sed '/^\s*$/d' storage.txt
```bash
有时候生成的数据文件中有空行,或者在空行中还有空格、tab、特殊字符(如:^M)等,而且文件又特别大,那怎么处理呢?可以通过Linux命令sed实现去除这些空行。
如果都是空行,而空行中没有字符的情况(但是不建议这样写)
sed -i '/^$/d' test.txt
建议加入 [[:space:]] 用以匹配空格、tab、^M 等特殊字符
sed -i '/^[[:space:]]*$/d' test.txt
上述建议方式的简化版(本人比较喜爱的一种方式,但特殊字符只匹配过'^M',其他未验证)
sed -i '/^\s*$/d' test.txt
 * (星号)用以匹配空格、tab、'^M'类特殊字符等至少零次

1.进入命令模式。vim的命令模式,就是在编辑模式下输入":",光标就会跳到屏幕最后一行,并在那里显示冒号,此时就已经进入命令模式。
命令模式的内容均显示在屏幕的最后一行,按下回车键,vim执行命令。
2.在命令模式下输入下列字符:输入:%s/^M$//g
3.回车。即会自动删除该文件中的所有 ^M 字符。
删除行尾空格的命令: :%s/\s\+$//
这句命令到底是什么意思呢?
% 指匹配整个文件,s 是置换的意思,^M 注意要用 Ctrl + V Ctrl + M 来输入,M 后面的 $ 代表匹配行尾的内容,最后的 g 则表示每行中匹配到的内容都要置换。理解了命令的含义,就好变通使用了,比如说,要将某个文件中的 Vim 全部替换成 VIM,则可以使用这样的命令::%s/Vim/VIM/g。
vim删除^M