我有一个约15k行/记录的文件,如下所示:
$ 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
我删除所有第二行的行是什么:
chrx NA NA NA NA NA NA
对你们这里的许多人来说可能很容易,但我对此感到沮丧。有人可以帮助我吗?感谢。
答案 0 :(得分:1)
您可以尝试以下sed命令。
sed '/^chr[0-9]\+\([[:blank:]]\+NA\)\+$/d' file
这将删除所有包含一个或多个NA的行。
答案 1 :(得分:1)
这可能适合你(GNU sed):
sed -r '/(\s+NA){6}/d' file
删除包含6个或更多所需字符串的任何行
sed '/\(\s\s*NA\)\{6\}/d' file
也适用于大多数seds。
答案 2 :(得分:0)
尝试类似:
egrep -v "chr[0-9]+\s+NA\s+NA" myfile.txt
或者如果你想坚持使用sed,那么
sed -r -i.bak "/chr[0-9]+\s+NA\s+NA/d" myfile.txt ##add multiple NA's that you wish to check for
在实际删除行之前会创建回文件
答案 3 :(得分:0)
我会用:
grep -vP '^chr\d+(\s+NA){6}\s*$' <infile >outfile