perl to remove lines from file

前端 未结 4 1157
春和景丽
春和景丽 2021-01-29 12:22

I have file that looks like:

ATOM 2517 O   VAL 160 8.337  12.679  -2.487
ATOM 2518 OXT VAL 160 7.646  12.461  -0.386
TER 
ATOM 2519 N   VAL 161 -14.431  5.789 -2         


        
4条回答
  •  臣服心动
    2021-01-29 12:44

    I realized I was supposed to write it in Perl, but now I've already written it in Python. I'm posting it anyway as it may prove to be useful, don't see any harm in that.

    #!/usr/bin/python2.7
    import sys
    import glob
    import os
    
    try:
        dir = sys.argv[1]
    except IndexError:
        print "Usage: "+sys.argv[0]+" dir"
        print "Example: "+sys.argv[0]+" /home/user/dir/"
        sys.exit(1)
    
    for file in glob.glob(os.path.join(dir, 'File*_*MINvac.pdb')):
        fin = open(file, "r")
        content = fin.readlines()
        fin.close()
    
        for i in range(0, len(content)):
            try:
                if "TER" in content[i]:
                    del content[i]
                    del content[i-1]
                    del content[i:i+3]
            except IndexError:
                break
        fout = open(file, "w")
        fout.writelines(content)
        fout.close()
    

    Edit: Added support for multiple files, like the OP wanted.

提交回复
热议问题