Shell scripting

 
Thread Tools Search this Thread
Homework and Emergencies Emergency UNIX and Linux Support Shell scripting
# 1  
Old 10-21-2010
Shell scripting

The given file consists of two tags i.e., <free-energy> and <position> tag. I want the output like this. The tag <length> is not required to consider.

(General format of output)

free-energy no.

first position no – second position no
third position no – fourth position no
------
------
Free-energy no
First position no – second position no
Third position no –fourth position no.

Output for the given file is
-25.40
9 – 20
25 - 127
-24.80
2 - 13

------------------------------------------------

<structure analysis-ids="UNAFold">
<!-- Start of folding 1 for sequence 1 ************************ -->
<model id="_1.1">
<model-info>
<free-energy>-25.40</free-energy>
</model-info>
<base-id>
<position>9</position>
</base-id>
</base-id-5p>
<base-id-3p>
<base-id>
<position>20</position>
</base-id>
</base-id-3p>
<length>4</length>
</helix>
<base-id>
<position>25</position>
</base-id>
</base-id-5p>

<position>127</position>
</base-id>
</base-id-3p>
<!-- End of folding 1 for sequence 1 ************************ -->
<!-- Start of folding 2 for sequence 1 ************************ -->
<model id="_1.2">
<model-info>
<free-energy>-24.80</free-energy>
</model-info>
<str-annotation>
<base-id>
<position>2</position>
</base-id>
</base-id-5p>
<position>13</position>



PLS. HELP ME TO WRITE A SHELL SCRIPT FOR THIS WHICH HELPS A LOT IN BIOINFORMATICS RESEARCH. THANKS IN ADVANCE.

Last edited by hravisankar; 10-22-2010 at 02:42 AM.. Reason: modified
# 2  
Old 10-22-2010
You can make a sort of cheap xml parser of sed:

Code:
sed -n '
  s/.*<free-energy>\([^<]*\)<.*/\1/p
  t
  /<base-id>/{
    :loop
    N
    /<\/base-id-3p>/!b loop
    s/.*<position>\([^<]*\)<.*<position>\([^<]*\)<.*/\1 - \2/p
    t
    s/^/Malformed: /
    s/\n//g
    w /dev/tty
   }
 ' in_file1 in_file2 . . . .

Narrative: sed runs in no-output-but-explicit-print mode. When it finds the free-energy tag it extracts the content (everything after the tag to the next <), makes that the entire new buffer, prints it, and then, just a speedup, branches to end of script (get next line). When it finds the base-id tag, it gets the next line and loops collecting all lines to the base-id-3p end tag in the buffer, extracts the two poistions, drops them around the ' - ' as the entire new buffer, prints it, and then branches to end of script (get next line), but if there are not two position tags, it labels it as Malformed, makes it all one line, writes it to the tty (you can use a log file in batch situations).
These 2 Users Gave Thanks to DGPickett For This Post:
# 3  
Old 12-04-2010
Code:
awk -F'[<>]' '/free-energy/{print $3}/position/{printf "%s"(f?RS:"-"),$3;f=!f}' infile

This User Gave Thanks to Scrutinizer For This Post:
# 4  
Old 12-10-2010
MySQL sed command doesn't work for large fields in a file

Hi,

I have to insert ## at 3051th and 3085th position of a record in a file.

Sample Data:
Code:
rd    1254O3104969765S0AP     GY10KQH1413980010008    013

Let us assume that i need to insert "##" at these position : ##GY10KQH1413980010008 ##

Code I am using:
Code:
sed 's/\(.\{3051\}\)/&##/;s/\(.\{3086\}\)/&##/' newtestfile.txt > test

Output:
Code:
sed: command garbled: s/\(.\{3051\}\)/&##/;s/\(.\{3086\}\)/&##/

I guess i know the problem. the command is not accepting huge amount of data in the field ie. 3051 and 3085.
But i have no solution for this problem.
Sed command has a limitation when used on solaris machines.. where as the command works fine on red hat linux..
Please suggest me with a solution because i have to tick to Solaris OS only.

Cheers
Aviroop
# 5  
Old 12-10-2010
@aviroops. Welcome to the forum. Please start a new thread for this.

---------- Post updated at 12:43 ---------- Previous update was at 11:05 ----------

You could try:
Code:
nawk '{$3051=$3051"##";$3086=$3086"##"}1' FS= OFS= infile

or
Code:
sed 's/\(.\{100\}\)\{30\}.\{86\}/&##/;s/\(.\{100\}\)\{30\}.\{51\}/&##/' infile

use nawk or /usr/xpg4/bin/awk and /usr/xpg4/bin/sed on Solaris
# 6  
Old 12-10-2010
GNU sed has no field length limit, and I find it on many modern Solaris installs, but modern solaris sed goes pretty big.
# 7  
Old 12-11-2010
Maybe stupid quuestion but how much is important to learn shell scripting ?
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Shell script to read lines in a text file and filter user data Shell Programming and Scripting

sxsaaas (3 Replies)
Discussion started by: VikrantD
3 Replies

2. Shell Programming and Scripting

help me in Shell Scripting

Hi there please have a look at the code..i want to create Using a named pipe. Run a find in the background starting in the working directory While this is happening wait for input from the user to ask him which file to find. If the user does not enter any data in 10 seconds ask the user again.... (1 Reply)
Discussion started by: kattak1511
1 Replies

3. Shell Programming and Scripting

Shell scripting

Hi, if in a network there are lots of PCs connected with either windows or linux as operating system.Then what will be the shell script for the same and also if the PC has linux in it then we have to find if it is occupied or unoccupied. If the PC has windows in it then we have to find if it is... (6 Replies)
Discussion started by: akansha singh
6 Replies

4. UNIX for Dummies Questions & Answers

Shell Scripting

Hey I have a data in the file named as outputFile.txt. The data is in the format 123456,12345678912345,400,09/09/09,INACTIVE. I want this output without commas ie 12345612345678912345400090909INACTIVE. Please tell me what to do and clear explain all the terms, as I am new to it. (6 Replies)
Discussion started by: sampandey31
6 Replies

5. Web Development

Perl scripting or shell scripting?

i am going to study any one of the scripting languages mentioned above(shell 0r perl scripting) . Which is having more scope for a fresher? (1 Reply)
Discussion started by: Anna Hussie
1 Replies

6. What is on Your Mind?

Shell Scripting vs Perl scripting

Gents, I have been working in a Solaris/Unix environment for about 9 months. I took some linux classses online before getting the job. But, I am not very good at scripting. I want to learn how to script. Do you think that I should start with Shell scripting or Perl? I wanted to continue with... (2 Replies)
Discussion started by: Pouchie1
2 Replies

7. Android

Android Scripting Environment: Shell Scripting and Android

I just upgraded to Android 2.2 from 2.1. The GPS issue that was troublesome in 2.1 seems to have been fixed. Some of web browsing seems faster, but it could just be my connection is better today ;) Flash works in some browsers but not very good and it is too slow for Flash apps designed for... (0 Replies)
Discussion started by: Neo
0 Replies

8. What is on Your Mind?

Shell scripting vs Perl scripting

Hi all, I would like to start developping some good scripting skills. Do you think it would be best to start with shell scripting or Perl? I already got a fundation, really basics, in perl. but I am wondering what would be best to be good at first. Can you please help me determine which one to... (14 Replies)
Discussion started by: Pouchie1
14 Replies

9. Shell Programming and Scripting

Call Shell scripting from Perl Scripting.

Hi How to call a shell scripting through a Perl scripting? Actually I need some value from Shell scripting and passes in the Perl scripting. So how can i do this? (2 Replies)
Discussion started by: anupdas
2 Replies

10. Shell Programming and Scripting

difference between AIX shell scripting and Unix shell scripting.

please give the difference between AIX shell scripting and Unix shell scripting. (2 Replies)
Discussion started by: haroonec
2 Replies
Login or Register to Ask a Question