Loop


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Loop
# 8  
Old 01-05-2013
Yes. You are getting result as per the option -A. If you want to grep and print only those lines starting with number:
Code:
#!/bin/bash
for x in {5..9}
do
    grep "^$x" numbers
done

# 9  
Old 01-05-2013
loop

Also break statement doesn’t work
Code:
for x in {5..9}; do grep -A $x 5 numbers >>file4.txt ; if [[ `grep 8 file4.txt` ]]; then  break ; fi; done

Moderator's Comments:
Mod Comment
Please use code tags when posting data and code samples!

Last edited by vgersh99; 01-05-2013 at 06:50 PM.. Reason: code tags, PLEASE!
# 10  
Old 01-05-2013
does break 2 work?

Sounds random, I know.
# 11  
Old 01-05-2013
How do you know the break statement does not work?
# 12  
Old 01-06-2013
Quote:
Originally Posted by hadinetcat
Hi
I wrote shell script to do the flowing count from 5 and down but doesn’t work please see my program
Code:
#Bash

x=0
y=10


while  (( x < y ))
do
(( x = x + 1 ))

grep -A $x 5 numbers >>file4.txt
done

these the output
Code:
5
6
5
6
7
5
6
7
8
5
6
7
8
9
5
6
7
8
9
10
5
6
7
8
9
10

5
6
7
8
9
10

Moderator's Comments:
Mod Comment
Please use code tags when posting data and code samples!
Reading through the comments that have been posted in this thread, it seems clear to me that hadinetcat doesn't understand what the command:
Code:
grep -A x 5 num

does. Putting it in a loop is adding to the confusion, but the output found in the file file4.txt looks perfectly reasonable except that there should not be any blank lines in the output and there should be three more occurrences of the sequence:
Code:
5
6
7
8
9
10

If we look at the commands that will be executed by this loop that produce output, they are:
Code:
grep -A 1 5 numbers
grep -A 2 5 numbers
grep -A 3 5 numbers
grep -A 4 5 numbers
grep -A 5 5 numbers
grep -A 6 5 numbers
grep -A 7 5 numbers
grep -A 8 5 numbers
grep -A 9 5 numbers
grep -A 10 5 numbers

The man page for grep says the command:
Code:
grep -A x 5 numbers

will print the each line in the file numbers that contains the character 5 and print the 1st x lines from numbers that follow the line that contained the 5. So if the contents of the file numbers is:
Code:
1
2
3
4
5
6
7
8
9
10

the 1st command in the list above will print:
Code:
5
6

the 2nd command will add:
Code:
5
6
7

the 3rd command will add:
Code:
5
6
7
8

the 4th command will add:
Code:
5
6
7
8
9

and each of the remaining six commands will add:
Code:
5
6
7
8
9
10

I suspect that the output you're showing here is a subset of the contents of file4.txt and that the output is exactly what I described above as the expected output from your script.

I'm suspecting that English is not your first language, but if what you mean by:
Quote:
I wrote shell script to do the flowing count from 5 and down
is that you want a script to produce the output:
Code:
5
4
3
2
1

then the easy way to do this (either with bash or with ksh) is:
Code:
for i in {5..1}
do      echo $i
done

If this is the output you want, but you insist on using grep -A on the file numbers with the contents shown before, a way to do this roughly following the format of your script would be:
Code:
x=5
y=0
while (( x > y ))
do      grep -A 0 $x$ numbers
        (( x-- ))
done

If what you wanted is the output:
Code:
5
6
7
8
9
10

and you want to use grep -A to get it, as has been shown above, no loop is required. The single command:
Code:
grep -A 5 5 numbers

is sufficient.
This User Gave Thanks to Don Cragun For This Post:
# 13  
Old 01-06-2013
loop

Here iw what I want simple and easy
Grep Colombia from file called usa.
Stop at break point .
But doesn’t work it keep repeating the same line
Code:
x=0
y=3000
while (( x < y ))
do
grep -A $x Colombia usa  >>file4.txt  # grep Colombia from file usa
(( x++ ))
 
if [[ `grep /div file4.txt` ]] #stop at break point
then
echo "break"
break
fi
done

---------- Post updated at 01:38 AM ---------- Previous update was at 12:46 AM ----------

Usa file format
Code:
<h2>Colombia</h2>
<table class='alt_rows_stat_table dual_border_data_table full_width index_table market_sortable_table' id='world_index_CO_table'>
<thead>
<tr class='data_header'>
<th class='first name'>
<span onclick='sortTable(this, 0)'>Index Name</span>
</th>
<th class='value'>
<span onclick='sortTable(this, 1)'>Value</span>
</th>
<th class='value_change'>
<span onclick='sortTable(this, 1)'>Change</span>
</th>
<th class='percent_change'>
<span onclick='sortTable(this, 1)'>% Change</span>
</th>
<th class='time last'>Time</th>
</tr>
</thead>
<tbody>
<tr class='odd'>
<td class='name'><a href="/quote/COLCAP:IND" title="Colombia COLCAP Index (COLCAP:IND)">Colombia COLCAP Index</a></td>
<td class='value'>1,794.70</td>
<td class='value_change down'>-2.23</td>
 
<td class='percent_change down'>-0.12%</td>
 
<td class='time last'>15:15:19</td>
</tr>
<tr class='even'>
<td class='name'><a href="/quote/COL20:IND" title="Columbia COL20 Index (COL20:IND)">Columbia COL20 Index</a></td>
<td class='value'>1,324.20</td>
<td class='value_change down'>-2.55</td>
 
<td class='percent_change down'>-0.19%</td>
 
<td class='time last'>15:15:19</td>
</tr>
<tr class='odd'>
<td class='name'><a href="/quote/IGBC:IND" title="Indice General de la Bolsa de Valores de Colombia (IGBC:IND)">Indice General de la Bolsa de Valores de Colombia</a></td>
 
a</a></td>
<td class='value'>14,389.56</td>
<td class='value_change down'>-25.28</td>
 
<td class='percent_change down'>-0.18%</td>
 
<td class='time last'>15:18:29</td>
</tr>
</tbody>
</table>
</div>

But the problem here it keep repeating the lines

Last edited by Scrutinizer; 01-06-2013 at 04:42 PM.. Reason: code tags, removed font definitions; again for the 2nd part
# 14  
Old 01-07-2013
In message #12 in this thread, I explained (in detail) why grep -A is not an appropriate tool to do what you seem to be trying to do. (It provides multiple copies of some lines because you have a loop and each time through the loop provides a copy of some of the data you want, but apparently not all of what you want.)

If what you want in the example you gave in your message #13 in this thread is the output that you have shown with the heading "Usa file format", there are several easy ways to get it; none of them involve using grep -A (although I could use two invocations of grep -n, some arithmetic in ksh, and then an invocation of grep -A to print what you want). Two much more efficient ways to get what you want (assuming that the data you want to extract is in a file named usa) are:
Code:
sed -n '/Columbia/,/\/div/p' usa

and
Code:
awk '/Columbia/,/\/div/' usa

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

For loop or while loop from a text file

Hi all, i developed a script to measure the uptime of a process in a Solaris 10/11 environments. All is well, but i came across a situation where there are multiple processes of the same name. Basically i have the following result file: beVWARS 13357 19592122 beVWARS 14329 19591910... (4 Replies)
Discussion started by: nms
4 Replies

2. Shell Programming and Scripting

awk loop using array:wish to store array values from loop for use outside loop

Here's my code: awk -F '' 'NR==FNR { if (/time/ && $5>10) A=$2" "$3":"$4":"($5-01) else if (/time/ && $5<01) A=$2" "$3":"$4-01":"(59-$5) else if (/time/ && $5<=10) A=$2" "$3":"$4":0"($5-01) else if (/close/) { B=0 n1=n2; ... (2 Replies)
Discussion started by: klane
2 Replies

3. Shell Programming and Scripting

Reset while loop to loop same file multiple times

Hi, I want to read file multiple times. Right now i am using while loop but that is not working. ex. While read line do while read line2 do echo stmt1 #processing some data based on data., done < file2.txt done < file1.txt # This will have 10... (4 Replies)
Discussion started by: tmalik79
4 Replies

4. Shell Programming and Scripting

Array Variable being Assigned Values in Loop, But Gone when Loop Completes???

Hello All, Maybe I'm Missing something here but I have NOOO idea what the heck is going on with this....? I have a Variable that contains a PATTERN of what I'm considering "Illegal Characters". So what I'm doing is looping through a string containing some of these "Illegal Characters". Now... (5 Replies)
Discussion started by: mrm5102
5 Replies

5. Shell Programming and Scripting

My for loop decides to become an infinite loop?

Hi, I was debating if I should put this in the dummies or scripts section, I apologize in advance if I chose poorly. Fairly new to Unix and BASH scripting but I thought I made it fairly well given my limited understanding. However, the output indicates that it's looping and I'm ending up with a... (5 Replies)
Discussion started by: gotreef
5 Replies

6. Shell Programming and Scripting

S# in a for loop - concatenate $(loop counter)

Hi, hope I am posting in the right section. My problem is that I have 2 or more arguments passed and I want to check if the arguments passed exists or not. The first argument should not exist and the remaining others should exist. example: ./shells.sh argument1 argument2 argument3 ... (5 Replies)
Discussion started by: fight4love
5 Replies

7. Shell Programming and Scripting

BASH loop inside a loop question

Hi all Sorry for the basic question, but i am writing a shell script to get around a slightly flaky binary that ships with one of our servers. This particular utility randomly generates the correct information and could work first time or may work on the 12th or 100th attempt etc !.... (4 Replies)
Discussion started by: rethink
4 Replies

8. Shell Programming and Scripting

Null Handling in Until loop. . .loop won't stop

Hi Im running this script, which is supposed to find the max value build some tables and then stop running once all the tables are built. Thing is , it keeps assigning a null value to $h and then $g is null so it keep building tables i.e. testupdateNUL. How can I stop this? Here is what I have: ... (4 Replies)
Discussion started by: brandono66
4 Replies

9. Shell Programming and Scripting

Using variables created sequentially in a loop while still inside of the loop [bash]

I'm trying to understand if it's possible to create a set of variables that are numbered based on another variable (using eval) in a loop, and then call on it before the loop ends. As an example I've written a script called question (The fist command is to show what is the contents of the... (2 Replies)
Discussion started by: DeCoTwc
2 Replies

10. Shell Programming and Scripting

Is there a better way I could have run this loop. (For loop with two variables)

Sorry for such a dreadful title, but I'm not sure how to be more descriptive. I'm hoping some of the more gurutastic out there can take a look at a solution I came up with to a problem, and advice if there are better ways to have gone about it. To make a long story short around 20K pieces of... (2 Replies)
Discussion started by: DeCoTwc
2 Replies
Login or Register to Ask a Question