Replace a "space" for a string in while loop


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Replace a "space" for a string in while loop
# 1  
Old 05-02-2014
Replace a "space" for a string in while loop

I'm doing a curl sweep on a list of URLs in a .txt. Some of the URLs may have a "space" in them- which is OK for the browser (it throws in a %20), but not OK in bash. With my curl check, I need it to replace a "space" with a "%20"

I was thinking about using the
Code:
tr

command but I don't know where to throw it in during a while loop..

Example Input (note the space error):
www.g oogle.com
www.yahoo.com
www.aol.com

Code:
echo 'Drag file here and press enter'
read SRC

echo '
Evaluating IP Range, please wait...'
awk '{print $1}' < $SRC |
while read ip;
do
echo $ip && curl -s --head $ip | head -n 1
done | awk 'ORS=NR%2?", ":RS' > $DEST

# 2  
Old 05-02-2014
Since you are using bash why not use parameter expansion. For example:
Code:
while read url
do
  # Do stuff with ${url// }
  echo "${url// }"
done <"$SRC"

if $SRC contains the name of the file that contains:
Code:
www.g oogle.com
www.yahoo.com
www.aol.com

This User Gave Thanks to Scrutinizer For This Post:
# 3  
Old 05-02-2014
Thanks for the reply Scrutinizer.- This outputs the urls without spaces in the terminal, but I actually need to it swap the space for a '%20'.

Also,

Can you show how you intended this to fit into my original code?

Quote:
Originally Posted by Scrutinizer
Since you are using bash why not use parameter expansion. For example:
Code:
while read url
do
  # Do stuff with ${url// }
  echo "${url// }"
done <"$SRC"

if $SRC contains the name of the file that contains:
Code:
www.g oogle.com
www.yahoo.com
www.aol.com


Last edited by sudo; 05-02-2014 at 02:47 PM..
# 4  
Old 05-02-2014
I'm confused. What values do you want the variable url to have for your sample input?
Code:
www.google.com
www.yahoo.com
    and
www.aol.com

or
Code:
www.g%20oogle.com
www.yahoo.com
    and
www.aol.com

This User Gave Thanks to Don Cragun For This Post:
# 5  
Old 05-02-2014
Sorry for the confusion- I need it to replace the space with '%20', not to eliminate the space.

Quote:
Originally Posted by Don Cragun
I'm confused. What values do you want the variable url to have for your sample input?
Code:
www.google.com
www.yahoo.com
    and
www.aol.com

or
Code:
www.g%20oogle.com
www.yahoo.com
    and
www.aol.com

# 6  
Old 05-02-2014
If you're using bash or a 1993 or later version of ksh, you could try something like:
Code:
echo 'Drag file here and press enter'
read SRC

echo '
Evaluating IP Range, please wait...'
while read ip
do
	ip=${ip// /%20}
	echo $ip && curl -s --head $ip | head -n 1
done < "$SRC" | awk 'ORS=NR%2?", ":RS' > $DEST

but note that nothing in this script sets DEST

Note also that in another thread you said you wanted the output to use a tab instead of comma to separate output fields. Your output field separator is actually a command and a space. To use tab instead change:
Code:
done < "$SRC" | awk 'ORS=NR%2?", ":RS' > $DEST

to:
Code:
done < "$SRC" | awk 'ORS=NR%2?"\t":RS' > $DEST

This User Gave Thanks to Don Cragun For This Post:
# 7  
Old 05-02-2014
I think that you'd find that if you used proper quoting, curl wouldn't mind the spaces either.
This User Gave Thanks to neutronscott For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Delete all log files older than 10 day and whose first string of the first line is "MSH" or "<?xml"

Dear Ladies & Gents, I have a requirement to delete all the log files in /var/log/test directory that are older than 10 days and their first line begin with "MSH" or "<?xml" or "FHS". I've put together the following BASH script, but it's erroring out: for filename in $(find /var/log/test... (2 Replies)
Discussion started by: Hiroshi
2 Replies

2. Shell Programming and Scripting

grep with "[" and "]" and "dot" within the search string

Hello. Following recommendations for one of my threads, this is working perfectly : #!/bin/bash CNT=$( grep -c -e "some text 1" -e "some text 2" -e "some text 3" "/tmp/log_file.txt" ) Now I need a grep success for some thing like : #!/bin/bash CNT=$( grep -c -e "some text_1... (4 Replies)
Discussion started by: jcdole
4 Replies

3. Shell Programming and Scripting

how to use "cut" or "awk" or "sed" to remove a string

logs: "/home/abc/public_html/index.php" "/home/abc/public_html/index.php" "/home/xyz/public_html/index.php" "/home/xyz/public_html/index.php" "/home/xyz/public_html/index.php" how to use "cut" or "awk" or "sed" to get the following result: abc abc xyz xyz xyz (8 Replies)
Discussion started by: timmywong
8 Replies

4. Shell Programming and Scripting

Replace file name on certain "changeable string"

Dear all, I can use the following script to remove certain strings of my filename. for filename in `find . -name *blah*`; do new_name=`echo $filename | sed -e "s/blah//g" $filename` mv $filename $new_name done What if i had file names below and i wish to sed only certain part of... (5 Replies)
Discussion started by: ymeyaw
5 Replies

5. Shell Programming and Scripting

How to replace the string with "*" in Perl?

Hi, I have a string like this: $str = "hello worlds"; The string should be replaced by "*". For example if the word is "Hello" it should be replaced by 5 stars in vertical way as mentioned in the below output. Similarly for worlds should be replaced by 6 stars. The output should be... (6 Replies)
Discussion started by: vanitham
6 Replies

6. Shell Programming and Scripting

awk command to replace ";" with "|" and ""|" at diferent places in line of file

Hi, I have line in input file as below: 3G_CENTRAL;INDONESIA_(M)_TELKOMSEL;SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL My expected output for line in the file must be : "1-Radon1-cMOC_deg"|"LDIndex"|"3G_CENTRAL|INDONESIA_(M)_TELKOMSEL"|LAST|"SPECIAL_WORLD_GRP_7_FA_2_TELKOMSEL" Can someone... (7 Replies)
Discussion started by: shis100
7 Replies

7. Shell Programming and Scripting

Script to search a string which is in between "" and replace it with another character

Hi, I am trying to search a string from a text file which is in between "" (Double Quotes) (Eg: "Unix"), and replace it with a | where ever it is appearing in the text file and save the file. Please help me. -kkmdv (6 Replies)
Discussion started by: kkmdv
6 Replies

8. Shell Programming and Scripting

input string="3MMTQSZ348GGMZRQWMJM4SD6M";output string="3MMTQ-SZ348-GGMZR-QWMJM-4SD6

input string="3MMTQSZ348GGMZRQWMJM4SD6M" output string="3MMTQ-SZ348-GGMZR-QWMJM-4SD6M" using linux shell script (4 Replies)
Discussion started by: pankajd
4 Replies

9. Shell Programming and Scripting

Replace a blank space with string "\\ "

Hi, I have a requirement to replace a every blank space with char "\\ ". Like string "God Love" to "God\\ Love" and "God Love" as "God\\ \\ Love". and only in the sed. We have already a script but it is replaceing all continuous blank space with one "\\ ". which is as DIR=`sudo echo... (7 Replies)
Discussion started by: Akshay4u
7 Replies

10. Shell Programming and Scripting

Failed to replace string with "sed"

Hi folks, I have the following configuration file: tofu:/tmp # cat bitbandConfig.properties maestroIp=10.10.10.10 maestroPort=2020 adminPlayPath=<Streaming Agent IP>:2021/streamingGateway/GetPlayList ###This part should not be changed### adminPlayVODProtocol=http username=iptv... (7 Replies)
Discussion started by: nir_s
7 Replies
Login or Register to Ask a Question