linux去掉文件空行,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 /^$/d

cat 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.txt

grep . data.txt

grep '[^$]' data.txt

sed '/^\s*$/d' data.txt

# 这个命令还可将完全空格、tab等组成的空行删掉。

sed /^[[:space:]]*$/d filename

# 可以删除文件中的空行。

# 可以删除内容为多个空格/tab组成的行

其他

linux的vim的%s/^\n$//g的使用也可以删除末尾\n或者空行。

注意:部分代码我没测试,大家试试。因为毕竟正则表达式的表达方法多种多样。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值