Escape character - sed

Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Escape character - sed
# 1  
Old 10-07-2008
Network Escape character - sed

Hi All,

How do i write in sed for the 6th and 7th field of etc/passwd file as it involves "/" character?

Does mine below is correct? It's incomplete script as i need help with syntax as i always getting may errors Smilie

Example of etc/passwd file:

blah:x:1055:600:blah blah:/home/blah:/bin/ksh

sed "s/\($name:.:[0-9]*:\)[0-9]*:\(.*\):\(\/.*\/.*\):\(\/.*\/.*\)

Last edited by c00kie88; 10-07-2008 at 10:17 AM..
# 2  
Old 10-07-2008
The separator after s can be any character. Also, I'd recommend using single quotes around the script unless you specifically need double quotes (in which case the backslashes need to be doubled).

sed 's%\('"$name"':.:[0-9]*:\)[0-9]*:\(.*\):\(/.*/.*\):\(/.*/.*\) ...'

Notice the mix of single and double quotes above.
# 3  
Old 10-08-2008
i tried that, but it says "SED: command garbled:
# 4  
Old 10-08-2008
it looks as:

sed "s/\($name:.:[0-9]*:\)[0-9]*:\(.*\):\(/.*/.*\):\(/.*/.*\)/\1$answer\2/" /etc/passwd

I tried the single quote as era suggested, but SED is not happy
# 5  
Old 10-08-2008
Repeat: you need to double the backslashes if you use double quotes. This is an artefact of the shell's quoting mechanisms, not of sed syntax as such. If you use the slash as separator, you do need to backslash any slashes which are not separators; but it's better to simply use a different separator character.

sed "s%\\($name:.:[0-9]*:\\)[0-9]*:\\(.*\\):\\(/.*/.*\\):\\(/.*/.*\\)%\1$answer\2%" /etc/passwd

With single quotes, that becomes

sed 's%\('"$name"':.:[0-9]*:\)[0-9]*:\(.*\):\(/.*/.*\):\(/.*/.*\)%\1'"$answer"'\2%' /etc/passwd

The variables $name or $answer obviously cannot contain the separator character in their values (or you need to escape the values).

Last edited by era; 10-08-2008 at 04:15 AM.. Reason: Need to escape variables if they contain the separator
# 6  
Old 10-08-2008

I use single quote..

sed 's/\('"$name"':.:[0-9]*:\)[0-9]*:\(.*\):\(/.*/.*\):\(/.*/.*\)' /etc/passwd

but still no good..

what did i do wrong???
# 7  
Old 10-08-2008
You are not copy+pasting correctly, and not reporting back what the error message is. "Still no good" is not a useful diagnostic. But if you carefully use your mouse to copy+paste the commands above, and carefully copy+paste any errors back here, we might be able to help you.

"Unknown option to s" means you have something after (what sed thinks is) the final separator which is not a valid option for s/from/to/gp (here, "g" and "p" are options). In this case, it's simply because you still use slash as the separator, without escaping those slashes which are not separators. Change the separator to %, or escape the slashes as required.

Also, your command is partial; you are missing the "to" part \1$answer\2
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Function to add escape character before specified character

Hi , I am looking for a function which will do the following. 1. I have a variable which will hold few special chracter like SPECIAL_CHARS="& ;"2. I have an escape character. ESCAPE_CHAR="\"3. Now when I passed some string in the function it will return the same string but now it will... (8 Replies)
Discussion started by: Anupam_Halder
8 Replies

2. Shell Programming and Scripting

sed - with escape character

i have string as below str=".<date>" in which i need to replace < with /< , when i tried with sed , got the output. --> echo $str | sed 's/</\\</g' .\<date> when i tried to assign it to a variable , i am not getting the same --> a=`echo $str | sed 's/</\\</g'` ; echo $a... (4 Replies)
Discussion started by: expert
4 Replies

3. Shell Programming and Scripting

sed escape character for comment string "/*"

Good afternoon all, I'm hoping my newbie question can help bolster someone's today. I'm trying to "fingerprint" SQL on its way into the rdbms for a benchmarking process (so I can tie the resource allocation back to the process more precisely). To do this, I'm essentially... (4 Replies)
Discussion started by: toeharp
4 Replies

4. Shell Programming and Scripting

Problem with using a sed to add escape character \ before $ and ' symbols

Hi all, I've got a problem with sed. Want to use it to add escape character \ before $ and ' symbols so condition='1'$some will become condition=\'1\'\$some echo "condition='1'$some" | sed 's/\($\)/\\\1/g' is not working properly. Can somebody help me with this please? Regards,... (7 Replies)
Discussion started by: johny_be_good
7 Replies

5. Shell Programming and Scripting

awk escape character

Discussion started by: faruque.ahmed
2 Replies

6. Shell Programming and Scripting

perl how to escape (|) character

my @array; my $sepa = "|"; print $sepa; open FH, "<100_20091023_2.txt"; while(<FH>){ push @array, split(/\$sepa/, $_); print "@array\n\n"; } I am not able split the line which have | separated (1 Reply)
Discussion started by:
1 Replies

7. Shell Programming and Scripting

Escape character in sed

Hello experts I am trying to write a shell script which will add ' ' to a unix variable and then pass it to oracle for inserting to a table. I am running the script as root and I have to do a su -c . The problem is the character ' is not recognised inside sed even after adding escape... (1 Reply)
Discussion started by: pvedaa
1 Replies

8. Shell Programming and Scripting

Escape character

Hi , I want to change space to ' in my script. I tried doing this, sed 's/ /\'/g' filename but i could not get it. can some one help me please. Thanks, Deepak (4 Replies)
Discussion started by: deepakpv
4 Replies

9. Shell Programming and Scripting

Escape character in vi?

I want to replace a string which contains "/" in vi but what is the escape character for forward slash? e.g. I have a text file with the contents below and I want to replace "/Top/Sub/Sub1" with "ABC". /Top/Sub/Sub1 The replace command I am using is ... (4 Replies)
Discussion started by: stevefox
4 Replies

10. UNIX for Dummies Questions & Answers

possible to escape the \ character in sed?

is it possible to escape the \ character in sed? right now I'm trying to replace all occurances of \ with \\ sed \"s|test|test_replacement|g\" file1 > output; #this works fine sed \"s|\\|\\\|g\" file1 > output; #this generates the following error: sed: -e expression #1, char 17:... (1 Reply)
Discussion started by: gammaman
1 Replies
Login or Register to Ask a Question

Featured Tech Videos