Replacing nulls using sed


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Replacing nulls using sed
# 1  
Old 02-22-2008
Replacing nulls using sed

Hi,

I am trying to replace nulls with spaces in every record of a '|' delimited file. I used this command -

cat input.dat | sed 's/||/| |/g' > output

But if a space appears twice '| | |' , then only the first null is getting replaced with a space. The second one remains as a null. I guess, this may be because I am not specifying the delimiter and checking for nulls. Can anyone help me out in this. Thanks a lot..!!!
# 2  
Old 02-22-2008
Quote:
Originally Posted by novice1324
Hi,

I am trying to replace nulls with spaces in every record of a '|' delimited file. I used this command -

cat input.dat | sed 's/||/| |/g' > output

But if a space appears twice '| | |' , then only the first null is getting replaced with a space. The second one remains as a null. I guess, this may be because I am not specifying the delimiter and checking for nulls. Can anyone help me out in this. Thanks a lot..!!!
Code:
sed 's/||/| |/g;s/||/| |/g' input.dat > output

# 3  
Old 02-23-2008
I read that answer with interest. It does answer the OP's question.

But just on a side issue, why do we have to do this twice? Is it because the way sed works is that it will not reoperate on something it has just worked on in the same command?

i.e.

for the line:
|||

the command
Code:
sed 's/||/| |/g'

works by doing
| ||

and because the second | has been operated on, sed will not evaluate it, and therefore the new line containing || is not picked up. Is this right?

thanks
# 4  
Old 02-24-2008
Quote:
Originally Posted by JamesByars
I read that answer with interest. It does answer the OP's question.

But just on a side issue, why do we have to do this twice? Is it because the way sed works is that it will not reoperate on something it has just worked on in the same command?

i.e.

for the line:
|||

the command
Code:
sed 's/||/| |/g'

works by doing
| ||

and because the second | has been operated on, sed will not evaluate it, and therefore the new line containing || is not picked up. Is this right?

thanks
Yes something like that. Once the pattern is treated, sed will stream further and look for the next mathing pattern.
# 5  
Old 02-25-2008
Thanks Vino for that answer.

But, having to do it twice will replace two consecutive nulls. This means that we have to repeat this operation as many times as the maximum number of consecutive nulls appearing in the row.

Is there a way to make it replace nulls by giving it the delimiter '|' and asking it to replace null values?

Again, thanks for your time.
# 6  
Old 02-25-2008
Quote:
Originally Posted by novice1324
Thanks Vino for that answer.

But, having to do it twice will replace two consecutive nulls. This means that we have to repeat this operation as many times as the maximum number of consecutive nulls appearing in the row.
I dont quite get what you are saying. But running that sed statement once will replace all null's with a whitespace. All you need is 's/||/| |/g;s/||/| |/g'.

Quote:
Originally Posted by novice1324
Is there a way to make it replace nulls by giving it the delimiter '|' and asking it to replace null values?

Again, thanks for your time.
I think awk can do it.
# 7  
Old 02-26-2008
Hi Vino,

I was mistaken. Sorry about that. This works.....

Thanks a lot..!!!
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Not replacing using sed

Hi all, I am trying to change the below word. but the changes is not reflecting in the new file sed -n 's/apple/orange/' filename ---------- Post updated at 12:51 AM ---------- Previous update was at 12:41 AM ---------- I tried this it works perl -pi.bak -e... (9 Replies)
Discussion started by: ramkumar15
9 Replies

2. Shell Programming and Scripting

sed not replacing

Data not replacing using sed,please check below. Replace_value=$$dbconn_target Search_value=$$dbcon_source   sed -e s/\${Search_value}/\${Replace_value}/g intrepid_sps_val.parm (2 Replies)
Discussion started by: katakamvivek
2 Replies

3. Shell Programming and Scripting

Replacing using sed

hi Guys, I have a rar file which consists of 10 files. each file has a space in its file name. how can i replace all spaces with _ i can replace them using sed but the thing is i need to replace using a script and not command. can anyone help me out??:confused: (2 Replies)
Discussion started by: rajeshb6
2 Replies

4. Shell Programming and Scripting

replacing by sed

hi my input file has got >,,,, or >, or >,,,,,, there are independent number of commas after >.... i want the o/p as > only that is just to remove "," after">" another is: i want to replace the last line of the file and to replace it by "hello"...how to do?... any nice script plz help (2 Replies)
Discussion started by: Indra2011
2 Replies

5. Shell Programming and Scripting

Need help with SED for replacing an IP

I need some advice to replace 10.183.x.x with 10.174.17.55 in a file containing multiple 10.183.x.x. Any help would be highly appreciated. (1 Reply)
Discussion started by: sags007_99
1 Replies

6. Shell Programming and Scripting

sed inside sed for replacing string

My need is : Want to change docBase="/something/something/something" to docBase="/only/this/path/for/all/files" I have some (about 250 files)xml files. In FileOne it contains <Context path="/PPP" displayName="PPP" docBase="/home/me/documents" reloadable="true" crossContext="true">... (1 Reply)
Discussion started by: linuxadmin
1 Replies

7. Shell Programming and Scripting

replacing ' with '' using sed

Hi, I have a text file and I would like to replace all occurrences of single quote ' with two consecutive single quotes '' . I have tried sed s/\'/\'\'/ < Folder/outputFile.txt > Folder/otherFile.txt but this replaces only the first occurrence of ' with ''. I want it to replace all the single... (7 Replies)
Discussion started by: DushyantG
7 Replies

8. Shell Programming and Scripting

SED: replacing

Hello, I was looking around, but could not find the answer, so I hope you ppl can help me. I want simply to replace text.:rolleyes: I found out SED would be good for this task.:b: So I tried: :confused: 1.) find text in a line and replace this particular line: for finding... (3 Replies)
Discussion started by: unknown7
3 Replies

9. Shell Programming and Scripting

replacing using sed

its again sed question. i have line - sed "s/$old/$new/g" "$f" > $TFILE && mv $TFILE "$f" working well if old="myoldfile" new="mynewfile" but if i want old="/home/shailesh/1test/" new="/home/shailesh/workspace/" it gives error like sed: -e expression #1, char 9: unknown option to... (2 Replies)
Discussion started by: shailesh_arya
2 Replies

10. Shell Programming and Scripting

Replacing in SED

I want to change the false in Node 1 to true. How do I do that? <Node1> <Usage>false</Usage> <Url>ABC</Url> </Node1> <Node2> <Usage>false</Usage> <Url>DEF<Url> </Node2> (8 Replies)
Discussion started by: superprogrammer
8 Replies
Login or Register to Ask a Question