linux下删除文本的空行

事情的起因是这样的,我有一个文件,用,分割的,第一列是染色体ID,我想知道这里面有多少个 ID,因此我想到去重计数。下面是我的代码。
cuiqingmei 2019/10/11 13:36:05 /if $ less CL100126046-L01_1.win.gz |cut -f 1 -d,|sort|uniq -c 24 4156 1 2260 10 2252 11 2232 12 1921 13 1791 14 1710 15

不要放过第一行的24后面统计的都是空的这一行,要细心。如果我把-c参数去掉的话,那么这里就会多出来一个空行,对于初学者,多一个空行,很难去注意到。
因此我check了一下这个文件,我发现,24条染色体的数据的最后多有一个空行,因为我需要去掉它来wc -l文本行数。所以你不能一上来就wc -l某文本行数,先要了解文本,再写代码。大部分人的小错误就是源于对输入/操作文件内容和格式的不熟悉。
因此:做如下事情:
删除空行
注意这里空行仅代表\n,即回车键,但是在linux的黑屏下,空行也可能还含有空格等字符的。
所以运行空行后,还需要check一下,有没有这类的。
比如说你用awk用空或者\t正则表达式来切割,print $1等,
或者你用grep匹配一下有没有空等开头的行了。
或者你再用一次去除空等符号的代码,直接去除掉。见下面处理的代码。
或者你在下游的代码里读入文本的时候,再过滤一下等等。
自己测试试试其他方法等。
常用语去除空行的操作
cat text |sed /^$/dcat text |grep -v '^$' # 我一般都使用这两个。

不常用
cat text | tr -s ‘\n'cat text | sed -n '/./p' cat text | awk ‘{if($0!="")print}' cat text | awk ‘{if(length !=0) print $0}' awk NF data.txt# 这个也可以将空格、tab等组成的空行删掉。 awk '!/^$/' data.txtgrep . data.txt grep '[^$]' data.txtsed '/^\s*$/d' data.txt # 这个命令还可将完全空格、tab等组成的空行删掉。sed /^[[:space:]]*$/d filename # 可以删除文件中的空行。 # 可以删除内容为多个空格/tab组成的行

其他 linux的vim的%s/^\n$//g的使用也可以删除末尾\n或者空行。
注意:部分代码我没测试,大家试试。因为毕竟正则表达式的表达方法多种多样。
【linux下删除文本的空行】其他学习:https://www.jb51.net/article/50641.htm
https://blog.csdn.net/qq_27446553/article/details/45306489

    推荐阅读