我有一个文件
chrM 1114 A A 555 G 52 9.8 xyz
chrM 1256 A A 555 G 0 inf xac
chrM 1184 A A 400 G 50 8 cxv
chrM 1148 p q 500 G 100 5 asad
chrM 2500 x x 555 v 0 inf dad
这里的第二列是$ 5 / $ 6的比率 我想删除那些行在哪里 $ 3 = $ 4和$ 8 = inf如果整个条件满足则应删除该行 预期产出
chrM 1114 A A 555 G 52 9.8 xyz
chrM 1184 A A 400 G 50 8 cxv
chrM 1148 p q 500 G 100 5 asad
我试着做
while $3=$4
do if %8=inf
do -d
done
done
答案 0 :(得分:1)
使用awk就像:
awk '{if ($3 != $4 && $8 != "Inf") { print $0 } }' myfile.txt
答案 1 :(得分:1)
在Perl中,解决方案几乎是你问题的转录
chrM 1114 A A 555 G 52 9.8 xyz
chrM 1184 A A 400 G 50 8 cxv
chrM 1148 p q 500 G 100 5 asad
perldoc
你甚至没有尝试过这个吗? Perl documentation非常好,也可以作为Perl发行版的一部分安装,并可通过计算机上的{{1}}命令使用
答案 2 :(得分:0)
对此的python解决方案是:
file = open("myfile.txt")
file2 = open("myfile2.txt", "a")
for i, line in enumerate(file)
strList = line.split()
if not (strList[2] == strList[3] and strList[7] == "inf"):
file2.write(line)
file.close()
file2.close()
这假设值以空格分隔
答案 3 :(得分:-1)
awk '!$3==$4||$8!~/inf/' file
chrM 1114 A A 555 G 52 9.8 xyz
chrM 1184 A A 400 G 50 8 cxv
chrM 1148 p q 500 G 100 5 asad
现在错误地纠正了。