replace %20 with space


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers replace %20 with space
# 8  
Old 09-01-2011
Code:
#!/bin/bash
for i in `ls -1 $FOLDER`
do
        sed 's,%20, ,g' $i > ${i}_modified
done

if needed, then mv the modified file to your original filename
# 9  
Old 09-01-2011
Quote:
Originally Posted by gary_w
I was trying to do this with find's -exec (or by piping to xargs) for the heck of it and found something strange.

Why does this work (deleting the %20 string):
Code:
find . -name \*%20\* -exec ksh -c 'mv $0 $( echo $0|sed 's/%20//g' )' {} \;

but this doesn't (replacing the %20 string with a space)
Code:
find . -name \*%20\* -exec ksh -c 'mv $0 $( echo $0|sed 's/%20/ /g' )' {} \;

sed: command garbled: s/%20/
mv: cannot access /g

Take a close look at your quoting. You cannot include a single-quote in a single-quoted string. Usually, that's done by closing the quoted string, escaping a single quote, and re-opening a quoted string: 'foo'\''bar'

You just got lucky with the version that works because there's no IFS-whitespace in the unquoted segment.

Although I cannot replicate it (my ksh complains about unmatched parenthesis), it looks to me that the ksh command string consists of mv $0 $( echo $0|sed 's/%20/. $0 is then set to /g ), and $1 to the pathname inserted in place of {}.

Since the $0 is unquoted, the first argument to mv, $0, will undergo field splitting. Since /g ) contains a space, it will become two fieldsd. The first argument to mv will then be /g, which is mentioned in the error message. The ) will be the second argument to mv. This is also consistent with where sed is complaining that its command abruptly ends.

Still, odd that your ksh itself didn't complain about the unterminated command substitution.

Regards,
Alister

Last edited by alister; 09-01-2011 at 10:49 AM.. Reason: Deleting critique based on misunderstanding
This User Gave Thanks to alister For This Post:
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

How to replace text with space in vi?

Hi, In the vi editor, I could do a search and replace: :%s/work/play/g but how do I do this for a string/text with space? like if I want to replace all text of "come here" with text "go there"? I've tried with quotes, double quotes, back slash, none of them worked. thanks!... (1 Reply)
Discussion started by: seafan
1 Replies

2. Shell Programming and Scripting

replace space with the help of sed

Hi, i have below string - mynameis arpit i want output like below - mynameis\ arpit that i am getting from below - temp='mynameis arpit' echo $temp|sed 's//\\ /g' --> mynameis\ arpit now i am doing - (2 Replies)
Discussion started by: thearpit
2 Replies

3. Programming

Replace one space with nothing

hi, d o g e v o l i want a perl command for the above string which should change to the below dog evol replace one space with nothing and two spaces with one space. Thanks, Amey (3 Replies)
Discussion started by: ameyrk
3 Replies

4. Shell Programming and Scripting

replace space for enter

i have to print in a html file directories like this /home/user /home/user/dir but the problem is that when i us this comand listado=`find $direcreal -type f -print` i get this /home/user /home/user/dir1 i try with sed to replace the space with an enter mostrarlistado=`echo "$listado"... (9 Replies)
Discussion started by: pc03
9 Replies

5. UNIX for Dummies Questions & Answers

Replace slash / with space

Hello there everyone. would like to ask for help if i wish to replace a slash / with space using sed. Original: T/T Result: T T hope someone could help me up, thanks Charles (4 Replies)
Discussion started by: seiksoon
4 Replies

6. Shell Programming and Scripting

Replace every other space

I'd like a sed command to replace every other space in my file. File: 0 1 0 3 0 2 0 5 Want: 01 03 02 05 Does anyone have any ideas? (9 Replies)
Discussion started by: peanuts48
9 Replies

7. Shell Programming and Scripting

Replace long space to become one space?

Hi, i have the log attached. Actually i want the long space just become 1 space left like this : Rgds, (12 Replies)
Discussion started by: justbow
12 Replies

8. Shell Programming and Scripting

Replace space

Hai masters, If a file contains content of 2000 lines, from which i need to remove the first n characters or first n spaces from each line of the file. If suppose to remove n characters or first n spaces from a single line means, just use the command nx. But from the above scenario,... (9 Replies)
Discussion started by: ecearund
9 Replies

9. Shell Programming and Scripting

replace space by _

Hi I need to know how I change the spaces by _ in folders and filder founded by find ex. find . -name "* *" -exec echo {} \; ./test space ./test space/new file.txt ./test space/new file ./test space/untitled folder ./test space/untitled folder/new fileruben ./Backup/backup/Image... (6 Replies)
Discussion started by: ruben.rodrigues
6 Replies

10. Shell Programming and Scripting

Replace , (comma) with space

Hi, what is the better way to replace the , (comma) with a space char? Example:STRING=dir1,dir2,dir3 toSTRING=dir1 dir2 dir3 And.. how to find if in the string there is a comma? Thanks :) (6 Replies)
Discussion started by: mbarberis
6 Replies
Login or Register to Ask a Question