首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除shell中包含多个字符串的行

删除shell中包含多个字符串的行
EN

Stack Overflow用户
提问于 2015-03-17 15:13:27
回答 4查看 75关注 0票数 0

我有一个具有~15k行/记录的文件,如下所示:

代码语言:javascript
复制
$ head -50 skato.tsv 
chr gene    SKATO.pval  SKATO.pmin  rho cmaf    nsnps.gene
chr1    NA  NA  NA  NA  NA  NA
chr1    SAMD11  0.7068  0.5451  0   0.01214 5
chr1    NOC2L   0.09887 0.05592 0   0.1926  8
chr1    KLHL17  0.1262  0.09206 0   0.003241    3
chr1    PLEKHN1 0.01034 0.2067  0   0.5905  11
chr1    HES4    0.02433 0.02433 0   0.002427    1
chr1    ISG15   0.1942  0.1942  1   0.3803  2
chr1    AGRN    0.8922  0.7151  1   0.115   18
chr1    C1orf159    0.5763  0.361   0   0.03485 2
chr1    TTLL10  0.2172  0.1272  0   0.1869  11
chr1    TNFRSF18    0.4014  0.2909  0   0.01379 6
chr1    TNFRSF4 0.1456  0.1179  1   0.001619    2
chr1    SDF4    0.1963  0.1963  0   0.0008104   1

我要做的是移除第二行的所有线条:

代码语言:javascript
复制
chrx    NA  NA  NA  NA  NA  NA

对在座的许多人来说,这可能很容易,但我对此感到有些沮丧。有人能帮帮我吗。谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-03-17 15:22:51

这可能对您有用(GNU sed):

代码语言:javascript
复制
sed -r '/(\s+NA){6}/d' file

删除任何包含6个或更多所需字符串的行。

代码语言:javascript
复制
sed '/\(\s\s*NA\)\{6\}/d' file

也适用于大多数seds。

票数 1
EN

Stack Overflow用户

发布于 2015-03-17 15:20:49

您可以尝试下面的sed命令。

代码语言:javascript
复制
sed '/^chr[0-9]\+\([[:blank:]]\+NA\)\+$/d' file

这将删除所有具有一个或多个NA的行。

票数 1
EN

Stack Overflow用户

发布于 2015-03-17 15:16:45

试一试如下:

代码语言:javascript
复制
egrep -v "chr[0-9]+\s+NA\s+NA" myfile.txt

或者如果您想继续使用sed,那么

代码语言:javascript
复制
sed -r -i.bak "/chr[0-9]+\s+NA\s+NA/d" myfile.txt ##add multiple NA's that you wish to check for

它将在实际删除行之前创建回文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29102783

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档