Use of For loop with Space


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Use of For loop with Space
# 1  
Old 05-26-2009
Use of For loop with Space

Hi,

I am trying to query the database to get the list of portfolio and for each portfolio, I am using the for loop, but the problem is some of the portfolio is having the spaces.

The Code

PORT=`${EFG_ISQL} -b <<-!
set nocount on
use ${EFG_DB}
go
select portId from PORTFOLIO
go
!`

echo $PORT

for Portfolio in $PORT
do
........................
done

When the portfolio is having spaces, the for loop is run for each word.

I tried using the IFS and changed the code to

PORT=`${EFG_ISQL} -b <<-!
set nocount on
use ${EFG_DB}
go
select portId from PORTFOLIO
go
!`
echo $PORT

spaces=IFS
IFS="
"
for Portfolio in $PORT
do
echo $Portfolio
.....
done

but now it is printing each string with a fixed lenght and appending the space after the string.

Can you please help me.
# 2  
Old 05-27-2009
Generally to handle spaces you change from a for loop to a while/read loop.
Just to make sure can you show an example input and desired output please?

Also use [ CODE ] tags to display code, logs or data for better readability and preserving formatting.
# 3  
Old 05-27-2009
Code:
PORT=`${EFG_ISQL} -b <<-!
set nocount on
use ${EFG_DB}
go
select portId from PORTFOLIO 
go
!`

echo $PORT

for Portfolio in $PORT
do
     ........................
done

The input is like aaa, bbb, ccc, ddd dd, eee, fff, ggg gg

Output should be
Code:
aaa
bbb
ccc
ddd dd
eee
fff
ggg gg

I just donot want to print one below the other but take each one in the loop and do some operations.



I edited your tags so they take effect - just open this post in edit mode to see what I did Smilie

Last edited by zaxxon; 05-28-2009 at 05:51 AM.. Reason: Made code tags work
# 4  
Old 05-28-2009
I would 1st change the commas and blanks that don't belong to the string into newlines so that every string is on a separate line and then pipe them into a while/read loop, where I can do something with every single line that is being processed:

Code:
$> cat infile
aaa, bbb, ccc, ddd dd, eee, fff, ggg gg
$> sed 's/, /\n/g' infile| while read LINE; do echo bla "${LINE}"; done
yo aaa
yo bbb
yo ccc
yo ddd dd
yo eee
yo fff
yo ggg gg

As example I just added that "bla" in front of every read line. You can do something else inside that while loop that would make more sense of course. If it is just for formatting text you could maybe just do it all in sed or awk etc.

HTH
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

For loop with space in file name

Hi All I have a source file named ABC-20150613 to 20150613.zip. I was trying to execute the below command on this source file, but its telling file is not available in that path and giving me some random file names. ls -ltr| for z in ABC-????????*to*????????*.zip do unzip $z -d done I... (5 Replies)
Discussion started by: ginrkf
5 Replies

2. Shell Programming and Scripting

Need Help on For Loop to pass space separated value as one value

Hi, I am having a file say list1 with a output like below jun 12 18:23 may 20 18:23 Now i want to pass the above two values into for loop,I have written a script like this. #!/bin/bash a=`cat list1` for i in $a do echo "HI $i" done expected output: HI jun 12 18:23 (3 Replies)
Discussion started by: sumanthupar
3 Replies

3. Shell Programming and Scripting

Unable to read the first space of a record in while loop

I have a loop like while read i do echo "$i" . . . done < tms.txt The tms.txt contians data like 2008-02-03 00:00:00 <space>00:00:00 . . . 2010-02-03 10:54:32 (2 Replies)
Discussion started by: machomaddy
2 Replies

4. Shell Programming and Scripting

How to loop through space separated values?

How do I loop thru space separated values in a variable? I hate to use very complicated counter increment logic for this kind of simple problem. Expected result(using ksh) $>echo "aaa bbbb cccc" | <looping code here> var=aaa var=bbbb var=cccc $>echo "aaa bbbb cccc" | while IFS=" "... (12 Replies)
Discussion started by: kchinnam
12 Replies

5. Shell Programming and Scripting

escape space characters in loop from file

Hi Everyone! I want to build sql inserts from a list of countries/regions saved in a file. The list looks like this: United Kingdom Czech Republic ... The script I run is: while read i; do var=`expr $var + 1`; echo "INSERT INTO calltypes VALUES($var, '$i','$i');" >>... (5 Replies)
Discussion started by: linuca
5 Replies

6. Shell Programming and Scripting

Escape space in for loop

I have a file with the following contents # more hello.txt man hello man whereru The shell script i have tries to echo the contents of the file hello.txt for i in `cat hello.txt` do echo $i done but the output i am getting is taking the space as a new line.. #... (3 Replies)
Discussion started by: Tuxidow
3 Replies

7. Shell Programming and Scripting

Problem if parameter has space in it using loop

for cmdopts in $*;do case $cmdopts in -mode) mode="$2";shift 2 ;; -server) server="$2";shift 2 ;; -Id) Id="$2";shift 2 ;; -passwd) passwd="$2";shift 2 ;; -rmtDir) rmtDir="$2";shift 2 ;; -lcDir) ... (9 Replies)
Discussion started by: pinnacle
9 Replies

8. Shell Programming and Scripting

Moving files with space, in for loop

Hi All I need to put a bunch of specific files in a directory (with loads of other files), into a tar archive. The best way I thought of doing this was putting the filenames into a file, reading them line by line in a for loop, and then adding them to a tar acrhive. However the filenames have... (6 Replies)
Discussion started by: saabir
6 Replies

9. Shell Programming and Scripting

how to protect white space in for loop

Hi All, I know there's a really simple answer to this but I just can't think of it :) I'm processing a file which has lines containing white space i.e. And I want to perform some awk on each line but when I do the following: for US in $( cat /tmp/unique-strings.tmp | sed 's/\/\\]/g'... (6 Replies)
Discussion started by: pondlife
6 Replies

10. Shell Programming and Scripting

Storing space delimited line in var with loop?

I have a script that converts a file into an html table. This script works fine for a 1 column table. However, I'm trying to do this for a multi-column table. My input file will look something like this: a b c d e f g h i My script basically works by taking in each line and putting that... (2 Replies)
Discussion started by: eltinator
2 Replies
Login or Register to Ask a Question