Replace spaces


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Replace spaces
# 8  
Old 10-06-2008
Quote:
Originally Posted by cfajohnson

Or. with bash or ksh93:
Code:
string=${string// /%20}

If your shell support parameter expansion this is the best solution.
# 9  
Old 10-06-2008
Quote:
Originally Posted by danmero
Code:
string=${string// /%20}

If your shell support parameter expansion this is the best solution.

Not necessarily.

Writing a portable script may be more important than writing the most efficient one.
# 10  
Old 10-06-2008
Quote:
Originally Posted by cfajohnson

Not necessarily.

Writing a portable script may be more important than writing the most efficient one.
Hey cfa!

Code:
string=${string// /%20}

This ended up working in Mac OS X but not in ubuntu hardy, I was getting an error so I ended up using vid's solution:

Code:
series_name=`echo "$series_name"|sed 's/ /%20/g'`

This works just fine on ubuntu hardy.

Do you know a lot about sed? I used vid's solution for extracting a number in between <seriesid></seriesid> in an xml file and it worked fine in Mac OS X but when I tried it in ubuntu hardy the output is blank, no number, nothing.

mind taking a look? Here is the sample XML

Code:
<Data>
−
<Series>
<seriesid>73545</seriesid>
<language>en</language>
<SeriesName>Battlestar Galactica (2003)</SeriesName>
<banner>graphical/73545-g11.jpg</banner>
−
<Overview>blah blah blah blah</Overview>
<FirstAired>2003-12-01</FirstAired>
<IMDB_ID>tt0407362</IMDB_ID>
<zap2it_id>SH710749</zap2it_id>
<id>73545</id>
</Series>
</Data>

and here is the solution given to me by vid to extract "73545" and set it to a variable

Code:
variable=`sed -ne 's/\(^\<seriesid\>\)\(.*\)\(\<\/seriesid\>\)/\2/p' filename|head -1`

# 11  
Old 10-06-2008
Quote:
Originally Posted by cfajohnson

Writing a portable script may be more important than writing the most efficient one.
If you can give me the definition of portable maybe I'll reevaluate my concept's of efficiency Smilie
# 12  
Old 10-07-2008
Quote:
Originally Posted by tret
Code:
string=${string// /%20}

This ended up working in Mac OS X but not in ubuntu hardy, I was getting an error so I ended up using vid's solution:

Code:
series_name=`echo "$series_name"|sed 's/ /%20/g'`

This works just fine on ubuntu hardy.

It will work on Ubuntu if you specify that it is to be executed by bash. Use a shebang as the very first line of the file:
Code:
#!/bin/bash

(Check that bash is indeed in /bin.)
Quote:

Do you know a lot about sed?

I avoid sed for anything beyond a simple search and replace. You get much more understandable (and thus easier-to-debug) code with awk.
Quote:
mind taking a look? Here is the sample XML

Code:
<Data>
−
<Series>
<seriesid>73545</seriesid>
<language>en</language>
<SeriesName>Battlestar Galactica (2003)</SeriesName>
...
</Data>

and here is the solution given to me by vid to extract "73545" and set it to a variable

Code:
variable=`sed -ne 's/\(^\<seriesid\>\)\(.*\)\(\<\/seriesid\>\)/\2/p' filename|head -1`


Code:
awk -F '[<>]' '/^<seriesid>/ { print $3 }' filename

# 13  
Old 10-07-2008
Quote:
Originally Posted by danmero
If you can give me the definition of portable maybe I'll reevaluate my concept's of efficiency Smilie

A portable script will run on any modern (i.e., POSIX) system. That means using only POSIX shell syntax and features and standard POSIX/Unix commands.
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 two or more spaces with one comma?

I'm using sh on hp-ux. I've got a file that looks like this. -5.65 175 -16.17 160 -13.57 270 -51.72 260 -8.30 360 -42.71 460 -.38 375 -.20 375 -4.15 170 -21.53 560 -18.84 360 I'd like to replace all the whitespace between the columns with one comma. I can't... (4 Replies)
Discussion started by: Scottie1954
4 Replies

2. Shell Programming and Scripting

String replace that has spaces

cat rf|nawk '/Use SSL= 0/{n+=1}{if (n==3){sub("Use SSL= 0","Use SSL= 0x1",$0)};print }' > rf2Fails. sed 's/Use SSL= 0/Use SSL= 0x1/g' rf > rf2Fails. In addition, the goal is to ONLY replace the 2nd occurence of the... (15 Replies)
Discussion started by: rfransix
15 Replies

3. Shell Programming and Scripting

Replace spaces at a specific Location

Hello All, I have a comma separated file which needs to be loaded to the database. But, I need to trim the white spaces for a specific column before its loaded. Below is the sample line from the input file: 690,690,0575,"01011940","01011940", , , , , ,36720,36722,V2020,V2999,... (6 Replies)
Discussion started by: Praveenkulkarni
6 Replies

4. Shell Programming and Scripting

Replace with spaces

Hi Guys file:///C:/DOCUME%7E1/c104058/LOCALS%7E1/Temp/moz-screenshot.pngsed 's///g' /source/filename.txt > /destination/filename.txt The above code deletes the characters which are not A-Z, a-z and 0-9, but I wanted to replace it with space without deleting them. Any help is... (2 Replies)
Discussion started by: gowrishankar05
2 Replies

5. UNIX for Dummies Questions & Answers

how to replace spaces with '_' in a file?

Hello #I have a file with a list of sequences; the sequence name is the line starting with '>'. $cat infile >AluYa5 SINE1/7SL Homo sapiens ggccgggcgcggtggctcacgcctgtaatcccagcactttgggaggccgaggcgggcggatcacgaggtc aggagatcgagaccatcccggctaaaacggtgaaaccccgtctctactaaaaatacaaaaaattagccgg... (11 Replies)
Discussion started by: jdhahbi
11 Replies

6. Shell Programming and Scripting

replace 2 spaces by one

Dear Friends, I have a flat file from which I want to remove single "space". And, wherever two spaces are provided it should replace it by only one space. E.g. I have N A T I O N A L E D U C A T I O N F O R O R G AN I S A T I ON S I want NATIONAL EDUCATION FOR ORGANISATIONS Please... (5 Replies)
Discussion started by: anushree.a
5 Replies

7. UNIX for Dummies Questions & Answers

replace characters with spaces between tag

I have a file where in some records are having the <Start> and <End> tag. There is data before the start tag , between the tages and after the End tag. I want to replace everything between the start & end tag with equivalent spaces. Input File afsdfaksddfs<start>12678<end>sgdfgdfsf... (6 Replies)
Discussion started by: varunrbs
6 Replies

8. Shell Programming and Scripting

how to replace . with 100 spaces

i have a file like:: $ cat space asd fghj itkg now i want to replace the next line with . and thn this . with the 100 spaces. cat space | tr '\n' '.', it woked for me, to replce the new line to . Now i want to replace this . with 100 spaces. Thanks in advance. (10 Replies)
Discussion started by: Prashant Jain
10 Replies

9. Shell Programming and Scripting

Remove spaces between charc and replace it with ','.

Hi, Below is my output file: (The below line has multiple spaces bet charc and I want to replace spaces with "," only for the first line) NYCCMS97KJ931 01-JUN-08 1214957 I want this to be: ... (5 Replies)
Discussion started by: smc3
5 Replies

10. Shell Programming and Scripting

Replace spaces recursively

Hi, I have a directory with files and sub-directories (sub-directory depth might go upto 5). There will be one or more spaces (continuously or anywhere in the file name) which need to be replaced with HYPHENs. How can i replace all SPACE occurances with HYPHEN in file/dir names recursively. (2... (5 Replies)
Discussion started by: prvnrk
5 Replies
Login or Register to Ask a Question