在Linux上处理一些数据文件时,有时候需要将其中的空行过滤掉,系统中提供的各种工具都可以完成这个功能。将常用的介绍如下吧:
1. grep
grep . data.txt grep -v '^$' data.txt grep '[^$]' data.txt
grep 正则:^ 锚定行的开始 如:'^grep'匹配所有以grep开头的行。
$ 锚定行的结束 如:'grep$'匹配所有以grep结尾的行。
. 匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p。
* 匹配零个或多个先前字符 如:' *grep'匹配所有一个或多个空格后紧跟grep的行。 .*一起用代表任意字符。
[] 匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。
[^] 匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-F和H-Z的一个字母开头,紧跟rep的行。
2. sed
View Code BASH
1 2 3 |
sed '/^$/d' data.txt sed '/^s*$/d' data.txt #这个命令还可将完全空格、tab等组成的空行删掉。 # The character class s will match the whitespace characters <tab> and <space>. |
3. awk
View Code BASH
1 2 |
awk NF data.txt # 这个也可以将空格、tab等组成的空行删掉。 awk '!/^$/' data.txt |
4. tr
View Code BASH
1 |
tr -s ' ' < data.txt |
貌似这些可以处理的命令里面,“grep . data.txt”这个的效率是比较高的;如果处理大数据量时可以比较一些这些命令的性能。
转自: