(BASH) Using a loop variable to grep something in a file?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting (BASH) Using a loop variable to grep something in a file?
# 1  
Old 11-09-2011
(BASH) Using a loop variable to grep something in a file?

Hi,

I have a loop running until a variable L that is read previously in the full script. I'd like to grep some information in an input file at a line that contains the value of the loop parameter $i.
I've tried to use grep, but the problem is nothing is written in the FILE files. It seems grep cannot find "$i".
(I've tried to avoid awk to keep the sed etc I'm using after.)
Any idea?

Thanks in advance!

Code:
#!/bin/bash
L=5 
INPUT=input

for i in $(eval echo {0..$L}) 
do
    FILE=File$i.dat
    test -e $FILE || touch $FILE
    grep "#stuff 1 1 $i stuff_i_want_to_get"   $INPUT | sed "y/(),/   /" | cut -d' ' -f6-  >> $FILE
done

# 2  
Old 11-09-2011
Using $i should be fine. I suspect something else isn't matching.

Code:
bash-3.2$ cat infile
#text1
#text2
#text3
#text4
#text5
bash-3.2$ for i in {2..4}; do grep "#text$i" infile; done
#text2
#text3
#text4
bash-3.2$

Do you have some example input?
# 3  
Old 11-09-2011
What happens when you grep for the string from the command line? Do you get any output?

It would help a great lot if you posted your input file, and would be more specific about what is it you are hunting there.

Your $(eval echo {1..$L}) construct is odd. Use seq(1) instead, like
Code:
for i in `seq 0 $L` ; do ...

or use a while loop:
Code:
L=-1
while [ $((++L)) -lt 6 ] ; do ...

This line is not needed:
Code:
 test -e $FILE || touch $FILE

since the >> operator will create the file if it does not exist.

Please post sample input and the string you are trying to grep for.
# 4  
Old 11-09-2011
Thanks for your help,

Quote:
Originally Posted by mirni
What happens when you grep for the string from the command line? Do you get any output?
I've tried to grep only "#Stuff 1 1" and it works fine: I get a file with all the stuff_i_want_to_get. But I'd like to have L files...

Quote:
It would help a great lot if you posted your input file, and would be more specific about what is it you are hunting there.
Sorry, the input file is huge...
Here is one example line (with $i=9)
Code:
#OpNN 1 1 9 29 29 (0.31464941524,0.00358922141008)

I'm copying 29 , 0.31464941524 and 0.00358922141008 in three columns of the File9.dat.
# 5  
Old 11-09-2011
What's your actual grep command?
# 6  
Old 11-09-2011
Is the "#OpNN" constant on all lines?
If you do a loop with
Code:
grep "#OpNN 1 1 $i" >> file${i}.out

what do you get?
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Bash Variable scope - while loop while reading from a file

Cope sample1: test.sh i=0 echo " Outside loop i = $i " while do i=$(( $i + 1)) echo "Inside loop i = $i " done echo " Out of loop i is : $i " When run output : Outside loop i = 0 Inside loop i = 1 Inside loop i = 2 Inside loop i = 3 Inside loop i = 4 Inside loop i = 5 Inside... (8 Replies)
Discussion started by: Adarshreddy01
8 Replies

2. Shell Programming and Scripting

Bash variable available for use outside loop

In the below for loop, I extract a variable $d which is an id that will change each time. The bash executes the problem that I am having is that p (after the done) is the path with the extracted $d. However, I can not use it in subsequent loops as it is not reconized. I have been trying to change... (3 Replies)
Discussion started by: cmccabe
3 Replies

3. Shell Programming and Scripting

How to use grep in a loop using a bash script?

Dear all, Please help with the following. I have a file, let's call it data.txt, that has 3 columns and approx 700,000 lines, and looks like this: rs1234 A C rs1236 T G rs2345 G T Please use code tags as required by forum rules! I have a second file, called reference.txt,... (1 Reply)
Discussion started by: aberg
1 Replies

4. Shell Programming and Scripting

Bash for loop with arrays second variable?

I am fairly new to bash and am not sure how to resolve this: I have a series of geographical long/lat points eg. 50/-30 listed on separate lines in a file called junk2. I have input these into an array and am then using that array in a for loop. Towards the end of the loop I create a file called... (4 Replies)
Discussion started by: lily-anne
4 Replies

5. Programming

Global variable in for loop (BASH)

Hello, I'm trying to read the variable "pause" from a for loop without luck. The function is dependant on the outcome of the test within the loop. If i run this, pause is always 0 within the function. Any ideas? Thanks. pause=0 users=1 (for (( ; ; )) do speed=`cat speed.log` ... (7 Replies)
Discussion started by: shadyuk
7 Replies

6. Shell Programming and Scripting

Detail on For loop for multiple file input and bash variable usage

Dear mentors, I just need little explanation regarding for loop to give input to awk script for file in `ls *.txt |sort -t"_" -k2n,2`; do awk script $file done which sorts file in order, and will input one after another file in order to awk script suppose if I have to input 2 or... (4 Replies)
Discussion started by: Akshay Hegde
4 Replies

7. UNIX for Dummies Questions & Answers

Problem with multiple grep in bash loop

Hello, I am trying to create a matrix of 0's and 1's depending on whether a gene and sample name are found in the same line in a file called results.txt. An example of the results.txt file is (tab-delimited): Sample1 Gene1 ## Gene2 ## Sample2 Gene2 ## Gene 4 ## Sample3 Gene3 ... (2 Replies)
Discussion started by: InfoSeeker2
2 Replies

8. UNIX for Dummies Questions & Answers

Help with 3 variable bash loop

Hi all! I think someone might be able to solve my problem pretty easily. I am trying to run a bash loop with 3 variables. I know how to do: for var1 in `cat list1`; do for var2 in `cat list2`; do for var3 in `cat list3`; command var1 var2 > var3; done; done; done However, this will run all... (4 Replies)
Discussion started by: torchij
4 Replies

9. Shell Programming and Scripting

grep'ing a variable that contains a metacharacter ($) with a while loop

This is driving me crazy, and I'm hoping someone can help me out with this. I'm trying to do a simple while loop to go through a log file. I'm pulling out all of the lines with a specific log line, getting an ID from that line, and once I have a list of IDs I want to loop back through the log and... (2 Replies)
Discussion started by: DeCoTwc
2 Replies

10. Shell Programming and Scripting

bash and ksh: variable lost in loop in bash?

Hi, I use AIX (ksh) and Linux (bash) servers. I'm trying to do scripts to will run in both ksh and bash, and most of the time it works. But this time I don't get it in bash (I'm more familar in ksh). The goal of my script if to read a "config file" (like "ini" file), and make various report.... (2 Replies)
Discussion started by: estienne
2 Replies
Login or Register to Ask a Question