Taking largest (negative) number from column of coordinates and adding positive form to every other
Hello all,
I'm new to the forums and hope to be able to contribute something useful in the future; however I must admit that what has prompted me to join is the fact that currently I need help with something that has me at the end of my tether.
I have a PDB (Protein Data Bank) file which I have condensed to the following for ease of modification:
What I want to do is take the largest negative number from each of the three columns after the column containing nothing but '0' values (-26.712 in the first column, for example), and add the positive value of those single numbers to every single value in their respective columns. This is because I require that there be no negative numbers in the output.
I've tried all sorts of combinations of (g)awk, sed, grep in Bash, and various Python scripts (which I think is probably a more suitable language for this sort of task) but nothing has done it.
I'm still a relative newbie so am probably being ignorant about something obvious; please bear with me. Any help would be greatly appreciated.
This User Gave Thanks to crunchgargoyle For This Post:
Thank you very much indeed for the quick responses. Corona the code you have suggested is clearly almost exactly what I need, but some of the output coordinates seem to be slightly off. My desired output for the first 4 rows, with the original unchanged 4 rows placed beforehand for comparison are as follows:-
Do you care about the output spacing? It reduces it to single spaces here, but you could make it tabs with awk -v OFS="\t" ...
---------- Post updated at 11:02 AM ---------- Previous update was at 11:01 AM ----------
Quote:
Originally Posted by crunchgargoyle
Of course, and thank you.
Original (example):
Desired (example):
I don't understand this output at all. What formula do you get 0.771 from? How does the smallest negative number manage to not become zero when you subtract it from itself? Why don't the other two change when you're adding to every single column?
---------- Post updated at 11:05 AM ---------- Previous update was at 11:02 AM ----------
I think I get it. You're wanting the largest negative number in the entire file.
---------- Post updated at 11:11 AM ---------- Previous update was at 11:05 AM ----------
It has to process the data twice, since it won't know the least value until the data's finished.
I apologise for the confusion: I treated the four rows independently.
What I want to do is take the largest negative numbers of columns 6-8, make them positive, and add that positive number to every single number in their respective columns.
---------- Post updated at 06:19 PM ---------- Previous update was at 06:13 PM ----------
Quote:
Originally Posted by vgersh99
nawk -f crunch.awk myFile
crunch.awk:
Thank you very much vgersh99 - that's doing almost exactly what I want. The only tiny thing is that even when numbers are positive in the column, I need them to have the largest negative number added to them if a negative number exists in that column.
I must apologise for these repeated requests and for not explaining myself clearly in the first instance.
I have a file that is pipe delimited and in Column F they have number values, both positive and negative. I need to take the one file I am starting with and split it into two separate files based on negative and positive numbers. What is the command to do so? And then I need to also transfer... (4 Replies)
Hi ALL,
I am having semi column separated file as below. I am having negative values for the records starting with 11095. How can I convert that positive number
I tried this below seems not working
sed 's/ \(*\)$/ -\1/;t;s/\(.*\)-/\1/ myfile
myfile... (6 Replies)
Dear All,
I have to split a tab delimited file in two files based on the presence of a positive or negative in column number 9 , for example
file:
A 1 5 erg + 6766 0.9889 0.9817 9.01882 erg inside upstream
B 1 8 erg2 + 6766 0.9889 0.9817 -9.22 erg2 inside... (3 Replies)
Let, I have three numbers
+00123.25
-00256.54
+00489.23
I need to sum up all those three numbers, after storing them in three variables (say var1, var2, var3).
I used both expr and BC, but they didn't work for me.
But, I am not able to sum up them, as I don't have any idea how to... (13 Replies)
Hello,
I have a list like this :
1
2
-4
0
-3
-7
5
6 etc.
Is there a way to remove all the positive values and print only the negative values, without using grep, sed or awk?
Thanks,
Prasanna (4 Replies)
Hi,
I have a file that looks like this:
Jake 2 3 4 6 4 3 -2 -1
Jerry 1 2 3 2 1 7 -6 -1
Timmy -1 -4 -5 -8 9 3 1
I want to find the most positive and negative value for each row and also define its position (based on column #)
So the output would look... (7 Replies)
Hello,
For my weather station I have made a little perl script to put the data into cacti. The next problem I have.
I can only get positive numbers or negative numbers.
What do I do:
Though a shell scrip I call the perl script.
Shell script:
#!/bin/sh
cat data.txt | stats.pl
Perl... (4 Replies)
Hi Gurus,
In my file I have an amount field from position 74 to 87, which contains values starting with '+' as well as '-'. I want to add all positive values in a varible called "CREDIT" and all negative values in a variable "DEBIT". I know, we can use grep to identify values with positive and... (4 Replies)