Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从文件中删除满足条件的行_Python_Perl_Shell - Fatal编程技术网

Python 从文件中删除满足条件的行

Python 从文件中删除满足条件的行,python,perl,shell,Python,Perl,Shell,我有一份档案 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 x

我有一份档案

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 
使用awk时,请简单地如下所示:

awk '{if ($3 != $4 && $8 != "Inf") { print $0 } }' myfile.txt

解决这一问题的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()
这假定值之间用空格分隔

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

犯了一个错误,希望现在就更正。

在Perl中,解决方案几乎是对您的问题的转录

perl-ane'除非$F[2]eq$F[3]和$F[7]eq“inf”data.txt,否则打印
输出
chrM 1114 A 555 G 52 9.8 xyz
chrM 1184 A 400 G 50 8 cxv
chrM 1148 p q 500 G 100 5 asad

难道你连试都没试过吗?非常好,它也是作为Perl发行版的一部分安装的,并且可以通过计算机上的
perldoc
命令获得。Python在这里相关吗?rahul先生,如果它给我所需的输出,那么它是,但是它用1if值替换第3列\t如果值是分开的,它应该可以在所有空白处工作,但是如果它没有,然后,您可以将“\t”作为参数添加到line.split()中,以便它只拆分\t