LinuxQuestions.org
Download your favorite Linux distribution at LQ ISO.
Go Back   LinuxQuestions.org > Forums > Linux Forums > Linux - General
User Name
Password
Linux - General This Linux forum is for general Linux questions and discussion.
If it is Linux Related and doesn't seem to fit in any other forum then this is the place.

Notices


Reply
  Search this Thread
Old 07-07-2006, 04:39 PM   #16
homey
Senior Member
 
Registered: Oct 2003
Posts: 3,057

Rep: Reputation: 61

I guess that problem is over my head.
 
Old 07-07-2006, 11:34 PM   #17
vidyashankara
Member
 
Registered: May 2006
Posts: 46

Original Poster
Rep: Reputation: 15
Quote:
Originally Posted by homey
I guess that problem is over my head.
Thats alright! Thanks for your help! I really appreciate it!
 
Old 07-09-2006, 03:46 PM   #18
homey
Senior Member
 
Registered: Oct 2003
Posts: 3,057

Rep: Reputation: 61
I hate to let it go.
If I understand you correctly this time, you want to grab any section between TER. something like this maybe....
Code:
#!/usr/bin/perl -w
# ./myscript A 1KDX.pdb file.txt

if($#ARGV != 2){
     die "Example: $0 A 1KDX.pdb file.txt \n";
}

my $LETTER = $ARGV[0];
my $IN = $ARGV[1];
my $OUT = $ARGV[2];

open(INFILE, "$IN")   or die "Can’t open 1KDX.pdb for read: $!";
open(OUTFILE, "> $OUT") or die "Can't open file.txt for write: $!";

while (<INFILE>){
  shift if /^TER.*/../$_\n/;
  print OUTFILE if /(^ATOM.................$LETTER)/ or /(^HETATM...............$LETTER)/;
}

close INFILE;
close OUTFILE;
 
Old 07-10-2006, 03:50 PM   #19
vidyashankara
Member
 
Registered: May 2006
Posts: 46

Original Poster
Rep: Reputation: 15
Quote:
Originally Posted by homey
I hate to let it go.
If I understand you correctly this time, you want to grab any section between TER. something like this maybe....
Code:
#!/usr/bin/perl -w
# ./myscript A 1KDX.pdb file.txt

if($#ARGV != 2){
     die "Example: $0 A 1KDX.pdb file.txt \n";
}

my $LETTER = $ARGV[0];
my $IN = $ARGV[1];
my $OUT = $ARGV[2];

open(INFILE, "$IN")   or die "Can’t open 1KDX.pdb for read: $!";
open(OUTFILE, "> $OUT") or die "Can't open file.txt for write: $!";

while (<INFILE>){
  shift if /^TER.*/../$_\n/;
  print OUTFILE if /(^ATOM.................$LETTER)/ or /(^HETATM...............$LETTER)/;
}

close INFILE;
close OUTFILE;

It works now, just one small problem

In case i file like this
Code:
Atom   A 1234
Atom   A 1234
Atom   A 1234
Atom   A 1234
Atom   A 1234
Atom   A 1234
TER    A 1234
HETATM A 1234
HETATM A 1234
HETATM A 1234
the script outputs lines starts from HETATM and having A after the TER. It should simply output
Code:
Atom   A 1234
Atom   A 1234
Atom   A 1234
Atom   A 1234
Atom   A 1234
Atom   A 1234
right now, it outputs

Code:
Atom   A 1234
Atom   A 1234
Atom   A 1234
Atom   A 1234
Atom   A 1234
Atom   A 1234
HETATM A 1234
HETATM A 1234
HETATM A 1234
how do you remove the HETATM after the TER?
 
Old 07-10-2006, 06:04 PM   #20
homey
Senior Member
 
Registered: Oct 2003
Posts: 3,057

Rep: Reputation: 61
Maybe you could use another argument at the command.
For example: ./myscript ATOM A 1AV1.pdb file.txt

EDIT: It may be best to use subs to handle the different length of the words ATOM and HETAM

Code:
#!/usr/bin/perl -w
# ./myscript ATOM A 1AV1.pdb file.txt

if($#ARGV != 3){
     die "Example: $0 ATOM A 1AV1.pdb file.txt \n";
}

my $NAME = $ARGV[0];
my $LETTER = $ARGV[1];
my $IN = $ARGV[2];
my $OUT = $ARGV[3];

open(INFILE, "$IN")   or die "Can’t open 1KDX.pdb for read: $!";
open(OUTFILE, "> $OUT") or die "Can't open file.txt for write: $!";

while (<INFILE>){
ATOM() if ($NAME =~ /ATOM/);
HETATM() if ($NAME =~ /HETATM/);

}
sub ATOM {
  shift if /^TER.*/../$_\n/;
  print OUTFILE if /(^ATOM.{17}$LETTER\b)/;
}

sub HETATM {
  shift if /^TER.*/../$_\n/;
  print OUTFILE if /(^HETATM.{15}$LETTER\b)/;
}

close INFILE;
close OUTFILE;

Last edited by homey; 07-10-2006 at 09:28 PM.
 
Old 07-11-2006, 01:22 PM   #21
vidyashankara
Member
 
Registered: May 2006
Posts: 46

Original Poster
Rep: Reputation: 15
Quote:
Originally Posted by homey
Maybe you could use another argument at the command.
For example: ./myscript ATOM A 1AV1.pdb file.txt

EDIT: It may be best to use subs to handle the different length of the words ATOM and HETAM

Code:
#!/usr/bin/perl -w
# ./myscript ATOM A 1AV1.pdb file.txt

if($#ARGV != 3){
     die "Example: $0 ATOM A 1AV1.pdb file.txt \n";
}

my $NAME = $ARGV[0];
my $LETTER = $ARGV[1];
my $IN = $ARGV[2];
my $OUT = $ARGV[3];

open(INFILE, "$IN")   or die "Can’t open 1KDX.pdb for read: $!";
open(OUTFILE, "> $OUT") or die "Can't open file.txt for write: $!";

while (<INFILE>){
ATOM() if ($NAME =~ /ATOM/);
HETATM() if ($NAME =~ /HETATM/);

}
sub ATOM {
  shift if /^TER.*/../$_\n/;
  print OUTFILE if /(^ATOM.{17}$LETTER\b)/;
}

sub HETATM {
  shift if /^TER.*/../$_\n/;
  print OUTFILE if /(^HETATM.{15}$LETTER\b)/;
}

close INFILE;
close OUTFILE;

But now it does not output the HETATM before the TER. It should show all the ATOM and HETATM before the TER, but not after the TER.
is that possible?
 
Old 07-11-2006, 03:07 PM   #22
homey
Senior Member
 
Registered: Oct 2003
Posts: 3,057

Rep: Reputation: 61
Well back to the old command:
./test A 1AV1.pdb file.txt

Something like this?????
Code:
#!/usr/bin/perl -w
# ./myscript A 1AV1.pdb file.txt

if($#ARGV != 2){
     die "Example: $0 ATOM A 1AV1.pdb file.txt \n";
}

my $LETTER = $ARGV[0];
my $IN = $ARGV[1];
my $OUT = $ARGV[2];

open(INFILE, "$IN")   or die "Can’t open $IN for read: $!";
open(OUTFILE, "> $OUT") or die "Can't open $OUT for write: $!";

while (<INFILE>){
  shift if /^TER.*/../$_\n/;
  print OUTFILE if /(^ATOM.{17}$LETTER\b)/ or /(^HETATM.{15}$LETTER\b)/;
  print OUTFILE if /^ATOM.*/;
#  print OUTFILE if /(^ATOM.{17}$LETTER\b)/;
}

close INFILE;
close OUTFILE;

Last edited by homey; 07-11-2006 at 03:26 PM.
 
Old 07-12-2006, 12:58 PM   #23
vidyashankara
Member
 
Registered: May 2006
Posts: 46

Original Poster
Rep: Reputation: 15
Quote:
Originally Posted by homey
Well back to the old command:
./test A 1AV1.pdb file.txt

Something like this?????
Code:
#!/usr/bin/perl -w
# ./myscript A 1AV1.pdb file.txt

if($#ARGV != 2){
     die "Example: $0 ATOM A 1AV1.pdb file.txt \n";
}

my $LETTER = $ARGV[0];
my $IN = $ARGV[1];
my $OUT = $ARGV[2];

open(INFILE, "$IN")   or die "Can’t open $IN for read: $!";
open(OUTFILE, "> $OUT") or die "Can't open $OUT for write: $!";

while (<INFILE>){
  shift if /^TER.*/../$_\n/;
  print OUTFILE if /(^ATOM.{17}$LETTER\b)/ or /(^HETATM.{15}$LETTER\b)/;
  print OUTFILE if /^ATOM.*/;
#  print OUTFILE if /(^ATOM.{17}$LETTER\b)/;
}

close INFILE;
close OUTFILE;

It still outputs the lines starting with HETATM..........A or B, after TER. I tried put next if TER, but it dint read B,C or D. so back to shift it.
 
Old 07-12-2006, 01:30 PM   #24
homey
Senior Member
 
Registered: Oct 2003
Posts: 3,057

Rep: Reputation: 61
I'm having trouble understanding what you want to do.
Something like this?
Code:
while (<INFILE>){
  shift if /^TER.*/../$_\n/;
  print OUTFILE if /(^ATOM.{17}$LETTER\b)/ or /(^HETATM.{15}$LETTER\b)/;
  next if /^HETATM.*/;
  print OUTFILE if /^ATOM.*/;
}
 
Old 07-12-2006, 01:54 PM   #25
vidyashankara
Member
 
Registered: May 2006
Posts: 46

Original Poster
Rep: Reputation: 15
Quote:
Originally Posted by homey
I'm having trouble understanding what you want to do.
Something like this?
Code:
while (<INFILE>){
  shift if /^TER.*/../$_\n/;
  print OUTFILE if /(^ATOM.{17}$LETTER\b)/ or /(^HETATM.{15}$LETTER\b)/;
  next if /^HETATM.*/;
  print OUTFILE if /^ATOM.*/;
}
Code:
#!/usr/bin/perl -w
# ./myscript A 1AV1.pdb file.txt

if($#ARGV != 2){
     die "Example: $0 A 1AV1.pdb file.txt \n";
}

my $LETTER = $ARGV[0];
my $IN = $ARGV[1];
my $OUT = $ARGV[2];

open(INFILE, "$IN")   or die "Can’t open $IN for read: $!";
open(OUTFILE, "> $OUT") or die "Can't open $OUT for write: $!";

while (<INFILE>){
  shift if /^TER.*/../$_\n/;
  print OUTFILE if /(^ATOM.................$LETTER\b)/ or /(^HETATM...............$LETTER\b)/;
  next if /^HETATM.*/;
  print OUTFILE if /^ATOM.................$LETTER/;
}

close INFILE;
close OUTFILE;
This is what i have on my script now. Lemme explain again

I have the following text file

Code:
ATOM<17 Random Charecters> A < many more random characters>
ATOM<17 Random Charecters> A < many more random characters>
ATOM<17 Random Charecters> A < many more random characters>
ATOM<17 Random Charecters> A < many more random characters>
ATOM<17 Random Charecters> A < many more random characters>
HETATM<15 Random Charecters> A < many more random characters>
HETATM<15 Random Charecters> A < many more random characters>
HETATM<15 Random Charecters> A < many more random characters>
HETATM<15 Random Charecters> A < many more random characters>
ATOM<17 Random Charecters> A < many more random characters>
ATOM<17 Random Charecters> A < many more random characters>
ATOM<17 Random Charecters> A < many more random characters>
TER <17 Random Charecters> A < many more random characters>
ATOM<17 Random Charecters> B < many more random characters>
ATOM<17 Random Charecters> B < many more random characters>
ATOM<17 Random Charecters> B < many more random characters>
ATOM<17 Random Charecters> B < many more random characters>
ATOM<17 Random Charecters> B < many more random characters>
ATOM<17 Random Charecters> B < many more random characters>
TER <17 Random Charecters> B < many more random characters>
HETATM<15 Random Charecters> A < many more random characters>
HETATM<15 Random Charecters> A < many more random characters>
HETATM<15 Random Charecters> A < many more random characters>
HETATM<15 Random Charecters> B < many more random characters>
HETATM<15 Random Charecters> B < many more random characters>
HETATM<15 Random Charecters> B < many more random characters>
Now i need a code to divide this file into many seperate files. In case i select A, It should output
Code:
ATOM<17 Random Charecters> A < many more random characters>
ATOM<17 Random Charecters> A < many more random characters>
ATOM<17 Random Charecters> A < many more random characters>
ATOM<17 Random Charecters> A < many more random characters>
ATOM<17 Random Charecters> A < many more random characters>
HETATM<15 Random Charecters> A < many more random characters>
HETATM<15 Random Charecters> A < many more random characters>
HETATM<15 Random Charecters> A < many more random characters>
HETATM<15 Random Charecters> A < many more random characters>
ATOM<17 Random Charecters> A < many more random characters>
ATOM<17 Random Charecters> A < many more random characters>
ATOM<17 Random Charecters> A < many more random characters>
TER <17 Random Charecters> A < many more random characters>
if i select B, It should output
Code:
ATOM<17 Random Charecters> B < many more random characters>
ATOM<17 Random Charecters> B < many more random characters>
ATOM<17 Random Charecters> B < many more random characters>
ATOM<17 Random Charecters> B < many more random characters>
ATOM<17 Random Charecters> B < many more random characters>
ATOM<17 Random Charecters> B < many more random characters>
TER <17 Random Charecters> B < many more random characters>
and If i select HETATM, It should select only the HETATM after the LAST TER, which is
Code:
HETATM<15 Random Charecters> A < many more random characters>
HETATM<15 Random Charecters> A < many more random characters>
HETATM<15 Random Charecters> A < many more random characters>
HETATM<15 Random Charecters> B < many more random characters>
HETATM<15 Random Charecters> B < many more random characters>
HETATM<15 Random Charecters> B < many more random characters>
Right now, the code you gave me, select the HETATM after TER when i select A or B.

Hope i explained properly this time
 
Old 07-12-2006, 03:23 PM   #26
homey
Senior Member
 
Registered: Oct 2003
Posts: 3,057

Rep: Reputation: 61
Does this one come any closer?
Code:
#!/usr/bin/perl -w
# ./myscript ATOM A 1AV1.pdb file.txt

if($#ARGV != 3){
     die "Example: $0 ATOM A 1AV1.pdb file.txt \n";
}

my $NAME = $ARGV[0];
my $LETTER = $ARGV[1];
my $IN = $ARGV[2];
my $OUT = $ARGV[3];

open(INFILE, "$IN")   or die "Can’t open $IN for read: $!";
open(OUTFILE, "> $OUT") or die "Can't open $OUT for write: $!";

while (<INFILE>){
  ATOM_A() if ($NAME =~ /ATOM/ and $LETTER =~ /A/);
  ATOM_B() if ($NAME =~ /ATOM/);
  HETATM() if ($NAME =~ /HETATM/);
}

sub ATOM_A {
  shift if /^TER.*/../$_\n/;
  print OUTFILE if /(^ATOM.{17}$LETTER\b)/ or /(^HETATM.{15}$LETTER\b)/;
}
sub ATOM_B {
  shift if /^TER.*/../$_\n/;
  print OUTFILE if /(^ATOM.{17}$LETTER\b)/;
}
sub HETATM {
  shift if /^TER.*/../$_\n/;
  print OUTFILE if /(^HETATM.{15}$LETTER\b)/;
}

close INFILE;
close OUTFILE;
 
Old 07-12-2006, 05:13 PM   #27
vidyashankara
Member
 
Registered: May 2006
Posts: 46

Original Poster
Rep: Reputation: 15
Quote:
Originally Posted by homey
Does this one come any closer?
Code:
#!/usr/bin/perl -w
# ./myscript ATOM A 1AV1.pdb file.txt

if($#ARGV != 3){
     die "Example: $0 ATOM A 1AV1.pdb file.txt \n";
}

my $NAME = $ARGV[0];
my $LETTER = $ARGV[1];
my $IN = $ARGV[2];
my $OUT = $ARGV[3];

open(INFILE, "$IN")   or die "Can’t open $IN for read: $!";
open(OUTFILE, "> $OUT") or die "Can't open $OUT for write: $!";

while (<INFILE>){
  ATOM_A() if ($NAME =~ /ATOM/ and $LETTER =~ /A/);
  ATOM_B() if ($NAME =~ /ATOM/);
  HETATM() if ($NAME =~ /HETATM/);
}

sub ATOM_A {
  shift if /^TER.*/../$_\n/;
  print OUTFILE if /(^ATOM.{17}$LETTER\b)/ or /(^HETATM.{15}$LETTER\b)/;
}
sub ATOM_B {
  shift if /^TER.*/../$_\n/;
  print OUTFILE if /(^ATOM.{17}$LETTER\b)/;
}
sub HETATM {
  shift if /^TER.*/../$_\n/;
  print OUTFILE if /(^HETATM.{15}$LETTER\b)/;
}

close INFILE;
close OUTFILE;

It still reads the HETATM after the TER
 
Old 07-12-2006, 06:37 PM   #28
homey
Senior Member
 
Registered: Oct 2003
Posts: 3,057

Rep: Reputation: 61
I guess help isn't coming!

Code:
#!/usr/bin/perl -w
# ./myscript ATOM A 1AV1.pdb file.txt

if($#ARGV != 3){
     die "Example: $0 ATOM A 1AV1.pdb file.txt \n";
}

my $NAME = $ARGV[0];
my $LETTER = $ARGV[1];
my @X = ("[B-D]", "[C-D]", "D");
my $IN = $ARGV[2];
my $OUT = $ARGV[3];

open(INFILE, "$IN")   or die "Can’t open $IN for read: $!";
open(OUTFILE, "> $OUT") or die "Can't open $OUT for write: $!";

while (<INFILE>){
  ATOM_A() if ($NAME =~ /ATOM/ and $LETTER =~ /A/);
  ATOM_B() if ($NAME =~ /ATOM/ and $LETTER =~ /B/);
  ATOM_C() if ($NAME =~ /ATOM/ and $LETTER =~ /C/);
  ATOM_D() if ($NAME =~ /ATOM/ and $LETTER =~ /D/);
  HETATM_A() if ($NAME =~ /HETATM/ and $LETTER =~ /A/);
  HETATM_B() if ($NAME =~ /HETATM/ and $LETTER =~ /B/);
  HETATM_C() if ($NAME =~ /HETATM/ and $LETTER =~ /C/);
  HETATM_D() if ($NAME =~ /HETATM/ and $LETTER =~ /D/);
}

sub ATOM_A {
  shift if /^TER.*/../$_\n/;
  print OUTFILE if /(^ATOM.{17}$LETTER\b)/ or /(^HETATM.{15}$LETTER\b)/;
  print OUTFILE if /(^ATOM.{17}$X[0]\b)/;
}
sub ATOM_B {
  shift if /^TER.*/../$_\n/;
  print OUTFILE if /(^ATOM.{17}$LETTER\b)/;
  print OUTFILE if /(^ATOM.{17}$X[1]\b)/;
}
sub ATOM_C {
  shift if /^TER.*/../$_\n/;
  print OUTFILE if /(^ATOM.{17}$LETTER\b)/;
  print OUTFILE if /(^ATOM.{17}$X[2]\b)/;
}
sub ATOM_D {
  shift if /^TER.*/../$_\n/;
  print OUTFILE if /(^ATOM.{17}D\b)/;
}
sub HETATM_A {
  shift if /^TER.*/../$_\n/;
  print OUTFILE if /(^HETATM.{15}$LETTER\b)/;
  print OUTFILE if /(^HETATM.{15}$X[0]\b)/;
}
sub HETATM_B {
  shift if /^TER.*/../$_\n/;
  print OUTFILE if /(^HETATM.{15}$LETTER\b)/;
  print OUTFILE if /(^HETATM.{15}$X[1]\b)/;
}
sub HETATM_C {
  shift if /^TER.*/../$_\n/;
  print OUTFILE if /(^HETATM.{15}$LETTER\b)/;
  print OUTFILE if /(^HETATM.{15}$X[2]\b)/;
}
sub HETATM_D {
  shift if /^TER.*/../$_\n/;
  print OUTFILE if /(^HETATM.{15}D\b)/;
}

close INFILE;
close OUTFILE;
 
Old 07-14-2006, 11:27 AM   #29
vidyashankara
Member
 
Registered: May 2006
Posts: 46

Original Poster
Rep: Reputation: 15
Quote:
Originally Posted by homey
I guess help isn't coming!

Code:
#!/usr/bin/perl -w
# ./myscript ATOM A 1AV1.pdb file.txt

if($#ARGV != 3){
     die "Example: $0 ATOM A 1AV1.pdb file.txt \n";
}

my $NAME = $ARGV[0];
my $LETTER = $ARGV[1];
my @X = ("[B-D]", "[C-D]", "D");
my $IN = $ARGV[2];
my $OUT = $ARGV[3];

open(INFILE, "$IN")   or die "Can’t open $IN for read: $!";
open(OUTFILE, "> $OUT") or die "Can't open $OUT for write: $!";

while (<INFILE>){
  ATOM_A() if ($NAME =~ /ATOM/ and $LETTER =~ /A/);
  ATOM_B() if ($NAME =~ /ATOM/ and $LETTER =~ /B/);
  ATOM_C() if ($NAME =~ /ATOM/ and $LETTER =~ /C/);
  ATOM_D() if ($NAME =~ /ATOM/ and $LETTER =~ /D/);
  HETATM_A() if ($NAME =~ /HETATM/ and $LETTER =~ /A/);
  HETATM_B() if ($NAME =~ /HETATM/ and $LETTER =~ /B/);
  HETATM_C() if ($NAME =~ /HETATM/ and $LETTER =~ /C/);
  HETATM_D() if ($NAME =~ /HETATM/ and $LETTER =~ /D/);
}

sub ATOM_A {
  shift if /^TER.*/../$_\n/;
  print OUTFILE if /(^ATOM.{17}$LETTER\b)/ or /(^HETATM.{15}$LETTER\b)/;
  print OUTFILE if /(^ATOM.{17}$X[0]\b)/;
}
sub ATOM_B {
  shift if /^TER.*/../$_\n/;
  print OUTFILE if /(^ATOM.{17}$LETTER\b)/;
  print OUTFILE if /(^ATOM.{17}$X[1]\b)/;
}
sub ATOM_C {
  shift if /^TER.*/../$_\n/;
  print OUTFILE if /(^ATOM.{17}$LETTER\b)/;
  print OUTFILE if /(^ATOM.{17}$X[2]\b)/;
}
sub ATOM_D {
  shift if /^TER.*/../$_\n/;
  print OUTFILE if /(^ATOM.{17}D\b)/;
}
sub HETATM_A {
  shift if /^TER.*/../$_\n/;
  print OUTFILE if /(^HETATM.{15}$LETTER\b)/;
  print OUTFILE if /(^HETATM.{15}$X[0]\b)/;
}
sub HETATM_B {
  shift if /^TER.*/../$_\n/;
  print OUTFILE if /(^HETATM.{15}$LETTER\b)/;
  print OUTFILE if /(^HETATM.{15}$X[1]\b)/;
}
sub HETATM_C {
  shift if /^TER.*/../$_\n/;
  print OUTFILE if /(^HETATM.{15}$LETTER\b)/;
  print OUTFILE if /(^HETATM.{15}$X[2]\b)/;
}
sub HETATM_D {
  shift if /^TER.*/../$_\n/;
  print OUTFILE if /(^HETATM.{15}D\b)/;
}

close INFILE;
close OUTFILE;

It still reads the HETATM after the TER , Also, a File can have more then A,B,C, and D. It might have till Z. or instead of A,B, C or D, It might be named as 1,2,3 also. Pretty complicated isnt it?
 
Old 07-14-2006, 04:19 PM   #30
homey
Senior Member
 
Registered: Oct 2003
Posts: 3,057

Rep: Reputation: 61
Quote:
Also, a File can have more then A,B,C, and D. It might have till Z. or instead of A,B, C or D, It might be named as 1,2,3 also.
Actually, that's not so bad because you can use a range of values in the command, like I did in the array.
For example: [A-D] or [1-3]

Note: this one is different than the others
./test ATOM_A [A-D] 1AV1.pdb file.txt

./test ATOM [A-D] 1AV1.pdb file.txt
./test ATOM [C-D] 1AV1.pdb file.txt
./test HETATM [C-D] 1AV1.pdb file.txt
./test HETATM [A-B] 1AV1.pdb file.txt
./test HETATM [1-3] 1AV1.pdb file.txt
./test HETATM [1-3] 1AV1.pdb file.txt
Code:
#!/usr/bin/perl -w
# ./myscript ATOM A 1AV1.pdb file.txt

if($#ARGV != 3){
     die "Example: $0 ATOM A 1AV1.pdb file.txt \n";
}

my $NAME = $ARGV[0];
my $LETTER = $ARGV[1];
my $IN = $ARGV[2];
my $OUT = $ARGV[3];

open(INFILE, "$IN")   or die "Can’t open $IN for read: $!";
open(OUTFILE, "> $OUT") or die "Can't open $OUT for write: $!";

while (<INFILE>){
  ATOM_A() if ($NAME =~ /ATOM_A/);
  ATOM_B() if ($NAME =~ /ATOM/);
  HETATM() if ($NAME =~ /HETATM/);
}

sub ATOM_A {
  shift if /^TER.*/../$_\n/;
  print OUTFILE if /(^ATOM.{17}$LETTER\b)/ or /(^HETATM.{15}A\b)/;
}
sub ATOM_B {
  shift if /^TER.*/../$_\n/;
  print OUTFILE if /(^ATOM.{17}$LETTER\b)/;
}
sub HETATM {
  shift if /^TER.*/../$_\n/;
  print OUTFILE if /(^HETATM.{15}$LETTER\b)/;
}

close INFILE;
close OUTFILE;
 
  


Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Similar Threads
Thread Thread Starter Forum Replies Last Post
Intermediate to advanced Spamassassin question. I think.... tbeehler Linux - Software 1 03-30-2006 02:04 PM
[sed] "Advanced" sed question(s) G00fy Programming 2 03-20-2006 12:34 AM
ADVANCED QUESTION !! Try This extremebfn Linux - Networking 1 01-22-2005 06:57 AM
advanced fluxbox question CatBreath Linux - Software 2 09-22-2004 02:03 AM
advanced LILO question ridesideways Linux - General 8 03-26-2004 07:20 PM

LinuxQuestions.org > Forums > Linux Forums > Linux - General

All times are GMT -5. The time now is 02:45 PM.

Main Menu
Advertisement
My LQ
Write for LQ
LinuxQuestions.org is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
Syndicate
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
Open Source Consulting | Domain Registration