要删除txt文件中的很多空行,因为行数过多,手动一行行删除太费时间,于是想到使用sed命令批量删除。但是sed是linux shell命令,刚购置的笔记本是windows系统,没有安装Linux虚拟机,怎么使用sed命令呢?当然可以去下载sed for windows的版本,但后续如果还要使用其他的linux shell,一个个去找windows的版本过于麻烦,想要一劳永逸解决问题,还是在windows上安装Cygwin。
到https://cygwin.com/install.html官方网站下载setup安装包,存在32位和64位安装包,现在的计算机都是64位的,所以两个安装包都可以。我的win10系统运行64位安装包有问题,所以改用32位安装包。网络连接选择直连(图1),为加快数据包下载速度,建议使用国内网易的源(图2,如果默认没有网易源,自行在user url处添加):http://mirrors.163.com/cygwin/。安装的包,选择default选项。
图1 选择直接连接网络
图2 网易国内源
安装完后,启动cygwin终端,运行sed命令,显示sed的参数介绍,表示sed命令已经安装,可以使用。pwd命令获得其当前工作目录,将要处理的txt文档移动到工作目录,并且运行如下的命令:
1 | sed '/^$/d' file1 > file2 |
上述命令只删除纯空行,file1中的空行删除后,内容重导向到file2。要理解命令中使用的正则表达式,可以查阅相关文档。
下面是sed命令的windows安装包的网址,供懒得安装cygwin的同学使用,当然前提是你熟悉windows的命令行,另外要注意1)txt文件要放到安装根目录的bin目录下;2)命令中的单引号要调整为双引号,其他相同。
http://gnuwin32.sourceforge.net/packages/sed.htm