04-17-2013
Please help to fix awk script
Good morning, fellows. I would need to ask for your help in editing my awk script. Here is the original version:
BEGIN { printf ("CRYST1 200.000 200.000 200.000 90.00 90.00 90.00 P 1 1\n")
maxatoms=1000
natom=0
found_struct = 0
found_bond = 0
}
{
if( NF == 5 )
{
foundff=0
natom++
fftype[natom]="UNKNOWN"
if ($1 ~ /CT/)
{
fftype[natom] = "C"
foundff=1
}
else if ($1 ~ /OH/)
{
fftype[natom] = "O"
foundff=1
}
else if ($1 ~ /HC/)
{
fftype[natom] = "H"
foundff=1
}
else if ($1 ~ /N/)
{
fftype[natom] = "N"
foundff=1
}
else if ($1 ~ /H1/)
{
fftype[natom] = "H"
foundff=1
}
else if ($1 ~ /HO/)
{
fftype[natom] = "H"
foundff=1
}
else if ($1 = "C")
{
fftype[natom] = "C"
foundff=1
}
else if ($1 = "O")
{
fftype[natom] = "O"
foundff=1
}
next
x[natom] = $1
y[natom] = $2
z[natom] = $3
if (foundff == 0)
printf("PROBLEM : Atom ff type %s not known\n", $6)
}
}
END {
for (iatom=1; iatom <= natom; iatom++)
{
printf("HETATM %d %2s %d %14.9f %14.9f %14.9f\n" ,
iatom, fftype[iatom], iatom, x[iatom], y[iatom], z[iatom])
}
printf ("END\n")
}
And this is type of file I am working with.
0 3 186 200 75202
timestep 500 186 0 3 0.002000 1.000000
40.0000000000 0.0000000000 0.0000000000
-0.0000000034 40.0000000000 0.0000000000
-0.0000000034 -0.0000000034 40.0000000000
CT_1 1 12.011000 0.061000 1.087513
-1.961325738 1.828501682 -8.933652557
CT_1 2 12.011000 0.061000 0.789711
-3.851025437 3.495427316 -10.05849230
CT_1 3 12.011000 0.061000 0.581330
-5.804493575 4.589489777 -8.369482861
ect
I would like to get this as an output:
CRYST1 200.000 200.000 200.000 90.00 90.00 90.00 P 1 1
HETATM 1 C 1 -1.961325738 1.828501682 -8.933652557
HETATM 2 C 2 -3.851025437 3.495427316 -10.05849230
HETATM 3 C 3 -5.804493575 4.589489777 -8.369482861
ect
But coordinates are not really picking up well (next line after CT_1 1 12.011000 0.061000 1.087513). Can you please have a look and suggest any solutions. Thanks.
10 More Discussions You Might Find Interesting
1. Shell Programming and Scripting
Gurus,
I am struggling with a issue and thought I could use some of your expertise.
Need Help with this
I have a flat file that has millions of records
24|john|account ~ info |56|
25|kuo|account ~ journal |58|
27|kim|account ~ journal |59|
28|San|account ~
journal |60|... (3 Replies)
Discussion started by: rimss
3 Replies
2. Shell Programming and Scripting
z=9
i=0
h=02
min=55
while
do
cat /home/barmecha/test | grep $h:$min >> /home/barmecha/file1
min=`expr $min + 1`
if ;
then
h=`expr $h + 1`
fi
i=`expr $i + 1`
done
i have a log file with time wise log in it, this script help me to pull out logs of the give time interval...but the... (8 Replies)
Discussion started by: abhishek27
8 Replies
3. Shell Programming and Scripting
Hi Friends,
Need some help in AWK.
Working on AIX 5
Have been trying the following functionality to make the record length fixed:
if( length(record) < 300 )
{
printf("%-300s\n", record);
}
In my opinion it will apply some fillers in the end.
Its is not making any... (4 Replies)
Discussion started by: kanu_pathak
4 Replies
4. Shell Programming and Scripting
i have a log file while looks like this
++
user_a blabla
blabla nas_b blabla user_d
this is a user_a
junk line
another junk line
user_c nas_m blabla
++
basically most of the lines contain a "user" keywords, and the rest of the lines do not have "user" at all.
So I have the... (17 Replies)
Discussion started by: fedora
17 Replies
5. Shell Programming and Scripting
Hi
I use the following code to read the file and to fix the length of the column of the record in the file 'Sample.txt'
ls Samp* | awk '
{ a=$1 }
END{
FS="n"
for(i=1;i<=NR;i++)
{
while( getline < a )
{
f1=$0;
print("Line::",f1);
f2=substr(f1,1,10)
print("Field1::",f2);... (10 Replies)
Discussion started by: meva
10 Replies
6. Shell Programming and Scripting
I have a script which will mask the 9th and 15th column in a record starting with BPR.
The record looks like below before my script
BPR*C*160860.04*C*ACH*CTX*01*072000326*DA*1548843*3006968523**01*071000013*DA*5529085*100323*VEN
The record will be masked after my script parses this... (19 Replies)
Discussion started by: Muthuraj K
19 Replies
7. Shell Programming and Scripting
Hi
I am dealing with the following string:
Date: Thur, 13 March 2011 01:01:10 +0000
I asked for help in another topic that converted a similar string:
Date: Thur, 13 March 2011 9:50 AM
To a 24 hr standard. The problem is that it comes out as:
Date: Thur, 13 March 2011 9:50:00 +0000... (4 Replies)
Discussion started by: duonut
4 Replies
8. Shell Programming and Scripting
Hi ,
I'd like to give you a little bit idea about my script which is used to get any generated file from remote server using ftp session then organized those file into directories based on their date ( at the end I supposed to have 1 months directories 20130401 20130402 ....20130430 ,... (27 Replies)
Discussion started by: arm
27 Replies
9. Shell Programming and Scripting
Hi All,
I have problem in the middle of implementing to users, whereby the complaint is all about the decimal place which is too long. I need two decimal places only, but the outcome from command is always fixed to 6.
See the sample :
before:
Sort Total
Site Sort SortName Parts ... (3 Replies)
Discussion started by: horsepower
3 Replies
10. UNIX for Dummies Questions & Answers
Hi all...
i have been trying to make this work but I have been failing for 6 hours ..
I know it should be something simple that I am missing to it would be great if you can help me ...
I want to subtract a fixed value (lets set 1) from any value >=1 from the whole file
my file looks like
... (4 Replies)
Discussion started by: A-V
4 Replies
LEARN ABOUT DEBIAN
fdformat
FDFORMAT(8) System Administration FDFORMAT(8)
NAME
fdformat - low-level format a floppy disk
SYNOPSIS
fdformat [options] device
DESCRIPTION
fdformat does a low-level format on a floppy disk. device is usually one of the following (for floppy devices the major = 2, and the minor
is shown for informational purposes only):
/dev/fd0d360 (minor = 4)
/dev/fd0h1200 (minor = 8)
/dev/fd0D360 (minor = 12)
/dev/fd0H360 (minor = 12)
/dev/fd0D720 (minor = 16)
/dev/fd0H720 (minor = 16)
/dev/fd0h360 (minor = 20)
/dev/fd0h720 (minor = 24)
/dev/fd0H1440 (minor = 28)
/dev/fd1d360 (minor = 5)
/dev/fd1h1200 (minor = 9)
/dev/fd1D360 (minor = 13)
/dev/fd1H360 (minor = 13)
/dev/fd1D720 (minor = 17)
/dev/fd1H720 (minor = 17)
/dev/fd1h360 (minor = 21)
/dev/fd1h720 (minor = 25)
/dev/fd1H1440 (minor = 29)
The generic floppy devices, /dev/fd0 and /dev/fd1, will fail to work with fdformat when a non-standard format is being used, or if the for-
mat has not been autodetected earlier. In this case, use setfdprm(8) to load the disk parameters.
OPTIONS
-n, --no-verify
Skip the verification that is normally performed after the formatting.
-V, --version
Output version information and exit.
-h, --help
Display help and exit.
SEE ALSO
fd(4), setfdprm(8), mkfs(8), emkfs(8)
AUTHOR
Werner Almesberger (almesber@nessie.cs.id.ethz.ch)
AVAILABILITY
The fdformat command is part of the util-linux package and is available from ftp://ftp.kernel.org/pub/linux/utils/util-linux/.
util-linux July 2011 FDFORMAT(8)