在对解释或者处理工作站进行操作时,常常要进行不同系统的数据格式的转换或者对数据中的空行或者重复行进行删除.
列举一个例字:在加acsii格式的测井曲线或者二维地震测量成果时,如果测井曲线数据中深度有重复行而没有设置环境变量或者二维地震测量成果中有重复行时,数据就无法加载进去.因此需要删除重复行.
下面介绍几种删除文本文件中空行或者重复行的方法:
(1)删除空行
a、用sed命令
sed '/^$/'d file1>file2
sed '/^[ ]*$/'d file1>file2
sed '/^[[:space:]]*$/' d file1>file2
b、用awk命令
awk '{if($0!=" ")print}' file1>file2
c、在vi编辑器中删除
:g/^s*$/d
d、用grep命令删除
cat file1|grep -V '^$' >file2
e、用tr命令删除
cat file1|tr -s ‘\n’>file2
(2)删除重复行
a、删除连续重复行
$ uniq -c file file中的重复行输出一次,并在每行前显示重复次数
$ uniq -d file file中的重复行输出一次,但不输出唯一的行
$ uniq -u file 只输出file中的唯一行
$ uniq file1 file2 把file1中的重复的相邻行删除,并把每行的一个拷贝送到file2
b、删除非连续重复行
cat filename|sort|uniq -c > newfilename
如果重复行的内容想只留一行:
cat filename|sort |uniq > newfilename
cat filename|sort|uniq -d > tmp