Help extracting single instance of numbers which repeat

Hi, the title isn't very descriptive but it'll be easier to explain what I need if I write out the coordinates from which I need to extract certain information:

ATOM   2521  C   MAM X  61      44.622  49.357  12.584  1.00  0.00           C
ATOM   2522  H   MAM X  61      43.644  49.102  12.205  1.00  0.00           H
ATOM   2523  C11 MAM X  61      45.498  50.039  11.772  1.00  0.00           C
ATOM   2536  C   MAM X  62      35.964  51.167  53.648  1.00  0.00           C
ATOM   2537  H   MAM X  62      36.622  51.061  52.798  1.00  0.00           H
ATOM   2538  C11 MAM X  62      36.278  52.149  54.641  1.00  0.00           C
ATOM   2551  C   MAM X  63      57.273  40.310  20.752  1.00  0.00           C
ATOM   2552  H   MAM X  63      57.185  39.814  19.797  1.00  0.00           H
ATOM   2553  C11 MAM X  63      58.520  40.106  21.426  1.00  0.00           C
ATOM   2566  C   MAM X  64      38.293  39.258   1.527  1.00  0.00           C
ATOM   2567  H   MAM X  64      37.235  39.061   1.426  1.00  0.00           H
ATOM   2568  C11 MAM X  64      38.719  40.568   1.353  1.00  0.00           C
ATOM   2581  C   MAM X  65      37.737  30.472  26.042  1.00  0.00           C
ATOM   2582  H   MAM X  65      37.065  31.282  25.801  1.00  0.00           H
ATOM   2583  C11 MAM X  65      37.283  29.302  26.675  1.00  0.00           C
ATOM   2596  C   MAM X  66      31.049  29.707   3.564  1.00  0.00           C
ATOM   2597  H   MAM X  66      31.141  30.714   3.184  1.00  0.00           H
ATOM   2598  C11 MAM X  66      29.856  29.416   4.253  1.00  0.00           C
ATOM   2611  C   MAM X  67      52.602  26.469  10.601  1.00  0.00           C
ATOM   2612  H   MAM X  67      52.385  25.997  11.548  1.00  0.00           H
ATOM   2613  C11 MAM X  67      53.918  26.586  10.166  1.00  0.00           C
ATOM   2626  C   MAM X  68      15.973  78.046  54.402  1.00  0.00           C
ATOM   2627  H   MAM X  68      15.990  78.975  53.853  1.00  0.00           H
ATOM   2628  C11 MAM X  68      14.881  77.168  54.242  1.00  0.00           C

In the 25th and 26th columns (may be some variation from copy/paste editing) there are two-digit numbers between 61 and 68 in the block I've posted above. What I need to be able to do is extract each of those numbers once only and pass each instance into separate, independent variables. Therefore given that there are 8 separate numbers (61-68) I need 8 separate variables corresponding to each.

Any help greatly appreciated. Bash or Python would be easiest for me. Many thanks.

Try:

awk '{print substr($0,25,2)}' file | sort | uniq
1 Like

Thank you, that extracts the numbers I need from the file with a 'grep' command at the beginning.

How would I go about assigning them to variables sequentially?

... | sort | uniq | while read var; do
  do something with $var here
done
1 Like

Only print unique field 6

awk '!x[$6]++ {print $6}' file

print complete line

awk '!x[$6]++' file
1 Like

I need to assign each individual number to an individual variable, though.

... | sort | uniq | tr '\n' ' ' | read var1 var2 var3 ...

This doesn't appear to work.

How are you testing if it works? What is the output of:

... | sort | uniq | tr '\n' ' ' | read var1 var2 var3; echo $var3

The output is blank.

I'm testing it by running:

grep 'MAM' test.pdb | awk '{print substr($0,25,2)}' | sort | uniq | tr '\n' ' ' | read var1 var2 var3; echo $var3

I'm using grep beforehand as stated because I don't want every line in the file to be analysed.

Try this then:

grep 'MAM' test.pdb | awk '{print substr($0,25,2)}' | sort | uniq | perl -pe 's/\n/ /' | read var1 var2 var3; echo $var3