help in my simple script


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting help in my simple script
# 1  
Old 09-15-2009
help in my simple script

Hi friends
I have a file with two colums separated by Tab, the second colum had some numbers like the following:
Code:
koko    2
toto3   4
momo6    1
hoho    0
bobo5    3

I'm trying to make a script that give me the results for rows when the second colum value are greater than 1
I make the following as a bigen , can you help me please to complete it
==========
Code:
#!/bin/bash
result=`cat file|cut -f 2`
for x in $result
do
if [ $x -gt 1 ]
then
        grep $x
else
        exit
fi
done

==========
Thanks

Last edited by vgersh99; 09-15-2009 at 08:40 AM.. Reason: code tags, PLEASE!
# 2  
Old 09-15-2009
To keep the forums high quality for all users, please take the time to format your posts correctly.

First of all, use Code Tags when you post any code or data samples so others can easily read your code. You can easily do this by highlighting your code and then clicking on the # in the editing menu. (You can also type code tags [code] and [/code] by hand.)

Second, avoid adding color or different fonts and font size to your posts. Selective use of color to highlight a single word or phrase can be useful at times, but using color, in general, makes the forums harder to read, especially bright colors like red.

Third, be careful when you cut-and-paste, edit any odd characters and make sure all links are working property.

Thank You.

The UNIX and Linux Forums

---------- Post updated at 07:41 AM ---------- Previous update was at 07:40 AM ----------

Code:
nawk '$2>1' myFile

# 3  
Old 09-15-2009
trying a fix to your code I came up with the following:
Code:
#!/bin/sh
result=`cat file | tr '011' ' '| cut -f 2 -d' '`
for x in $result
do
if [ $x -gt 1 ]
then
        grep "  $x" file
fi
done

I got rid of the 'exit' as you won't process anything after a value that is less than or equal to 1 otherwise. I added the name of the file to the 'grep' command so it knew where to search for the match, and I added a 'tr' command to change the tab to a space and then cut get's a '-d' switch to separate the fields on that space.
This assumes you have only one tab separating the columns of data, and seems to work for me.
However, I would rewrite it like the following, so as to process this with one step inside a loop:
Code:
#!/bin/sh
while read c1 c2 
do
if [ $c2 -gt 1 ]
then
     printf "%s\t%s\n" $c1 $c2 
fi
done < file

Using a while loop to loop through the file, the read command separates the output into two variables. Test the second variable, and if the criteria is met, just reconstruct the known format of the file with a printf statement, rather than greping the original file.
Caveat: I don't have access to 'bash' but I do have access to a bourne shell, so I used that. Probably shouldn't make a difference in this code.

Last edited by rwuerth; 09-15-2009 at 11:35 AM.. Reason: correct some blatant spelling errors
# 4  
Old 09-15-2009
I have this;

Code:
#!/bin/bash

for x in `cat -t file`
do
        result=`echo $x | sed s:'^.*^I'::`
        if [ $result -gt 1 ]
        then
                echo $x | sed s:'\^I:    ':
        fi
done

With the -t flag in cat i've changed your tabs for this ---> ^I.
Then, the way i see it, is easier to handle each entry.

With,

Code:
result=`echo $x | sed s:'^.*^I'::`

i cut everything from the beginning to ^I inclusive, for instance it changes koko^I2 to just the last 2.

Now i can say which is bigger than 1.

To give them the tab back i do...

Code:
echo $x | sed s:'\^I:    ':

i´m not very happy with it but it works and changes ^I for four spaces in the result.

That's all.
# 5  
Old 09-15-2009
did you guys miss post number 2? awk can do what you want in about 8 keystrokes.
# 6  
Old 09-16-2009
No I didn't miss it. Yes it does solve the problem rather quickly and neatly.

What it doesn't do is improve the OP's shell scripting. Sure, he gets a working fix now, but the next time when he has to write a shell script to solve a different problem, and it turns out like his first attempt here, he's back for a quick fix again. "Give a man a fish, you feed him for a day ..."

Not sure why you have a problem with this.
# 7  
Old 09-21-2009
I really missed it. I did. I thought it was an example to illustrate the forum editing standards and didn't read it.
But if you are learning, i think there is nothing wrong with see different solutions.

Regards.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Simple if script

Hi, new to unix and scripting, and i'm trying to set up a simple "if" script to create a seperate flag file dependant on success. So far i have the following ($5 is a variable passed to the script from the backup job) if then touch /u03/backups/backup_ended.flag else touch... (13 Replies)
Discussion started by: richs24
13 Replies

2. Linux

How to execute a simple select script using a shell script?

Hi team, I have two select statements and need to run them using SYSDBA user select * from temp_temp_seg_usage; select segment_name, tablespace_name, bytes/ (1024*1024) UsedMb from dba_segments where segment_name='TEMP_TEMP_SEG_USAGE'; Need to run this using a shell script say named... (1 Reply)
Discussion started by: pamsy78
1 Replies

3. Shell Programming and Scripting

Help making simple perl or bash script to create a simple matrix

Hello all! This is my first post and I'm very new to programming. I would like help creating a simple perl or bash script that I will be using in my work as a junior bioinformatician. Essentially, I would like to take a tab-delimted or .csv text with 3 columns and write them to a "3D" matrix: ... (16 Replies)
Discussion started by: torchij
16 Replies

4. Shell Programming and Scripting

Simple Script Can u help please?

I have a file that contains these lines User ID Username -------- ---------- 7738626,zrazak 7783535,jvincigu 7805567,ldrennan 7805583,mtsakama I need to sort the names alphabetically How can I sort the lines based on the user names ? I would appreciate a quick reply anyone ... (1 Reply)
Discussion started by: mnassiri
1 Replies

5. Shell Programming and Scripting

Simple Script to do so?

hi guys, i am a noob to shell scripting, and i would like to run a simple script, that could simply do the following: 1. SFTP to a remote server/path...and download the newest *.gz backup file on that server. (there are many *.gz files in that folder, i simply need the latest one) 2. locally... (1 Reply)
Discussion started by: Confidence
1 Replies

6. Shell Programming and Scripting

Simple script

I have a script that will check for integer line by line and if it encounter any blank space will echo it: Below the script: #!/bin/ksh while read i do echo "Value is $i" count=`expr substr "$i" 1 3` echo $count if && then echo "Matched" else echo "Blank Space Found" fi (3 Replies)
Discussion started by: ali560045
3 Replies

7. UNIX for Dummies Questions & Answers

Simple script

I am trying to print my script arguments, but i am stuck at the arrow pointed lines..please help #!/bin/bash echo "Number of arguments $#" count=1 while do echo ${$count} <======================== count = $(expr $count +1) <================== done (4 Replies)
Discussion started by: chvs2000
4 Replies

8. Shell Programming and Scripting

simple script

Hi, I just need a shell script to find out the processes taking longer time...(Unix/Linux) Urgent response needed.. Rajiv (5 Replies)
Discussion started by: rajivn786
5 Replies

9. Shell Programming and Scripting

Simple Script

Here is the script that i am trying to run. I get an error and i can't figure out what is the problem. #!/bin/bash echo "What is your name" read NAME if ; then echo "My name is the same" esle echo "You have a nice name" fi (11 Replies)
Discussion started by: xplod4202
11 Replies

10. UNIX for Dummies Questions & Answers

help with simple script

I need a script that checks to see if ypserv is running, and if not it will restart yp. I have a ypslave that is running Sol9, and the ypsrv daemon is dieing, I want to create a cron job that periodicly checks to see if it's running, and if it see's that it isn't, it will re-start the daemon (1 Reply)
Discussion started by: jdel80
1 Replies
Login or Register to Ask a Question