[vox-tech] BASH: ignore space in for loop

Foo Lim foo at joshuatree.cs.ucdavis.edu
Wed Oct 20 13:22:20 PDT 2004


On Wed, 20 Oct 2004, Dylan Beaudette wrote:

> Hi --
> 
> Can't seem to figure out how to make this BASH script do what I would like it 
> to do:
> 
> I have 2 files: 
> 
> file A:
> Name of place 1
> Name of place 2
> ...
> 
> file B:
> Name of place 1 [tab] code1
> Name of place 1 [tab] code1
> ...
> 
> The "Name of place" values often have spaces in them, which seems to be 
> confusing a for loop in bash:
> 
> running:
> for this_quadname in `cat file_a`; do echo grep -i "$this_quadname" file_b ; 
> done 
> 
> produces this:
> grep -i 'Name' file_b
> grep -i 'of' file_b
> grep -i 'place'  file_b
> 
> ...so it would seem that the for loop is iterating over both spaces AND 
> newlines in the `cat file_a` expression...

Hi,

Try using a while-read loop instead:

while read line; do grep "$line" test2.txt; done < test.txt

Or in your case:

while read this_quadname; do
echo grep -i "$this_quadname" file_b ; 
done < file_a

LMK if it works!

HTH,
FL



More information about the vox-tech mailing list