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
推荐阅读
- 开学第一天(下)
- 【故障公告】周五下午的一次突发故障
- 生活随笔|好天气下的意外之喜
- MongoDB,Wondows下免安装版|MongoDB,Wondows下免安装版 (简化版操作)
- 汇讲-勇于突破
- Android中的AES加密-下
- 说的真好
- 放下心中的偶像包袱吧
- Linux下面如何查看tomcat已经使用多少线程
- 【1057快报】深入机关,走下田间,交通普法,共创文明