Vi/sed placing an "r" when I ask for "\r"


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Vi/sed placing an "r" when I ask for "\r"
# 1  
Old 02-08-2012
Vi/sed placing an "r" when I ask for "\r"

I'm using SunOS 5.9 and the version of vi on this machine has several differences, compared to other machines I use, that don't produce the desired result. For example, if I open a text file in vi and then enter the following in command mode:
Code:
%s/ /\r/g

I'm expecting vi to replace all spaces with a carriage return. Instead, it replaces all spaces with an "r". I've tried using \r\n, \n, \n\r and I still get the same result. This seems to be prevalent on all Solaris/SunOS hosts I use.

How do I determine the version of vi I am using? --version is not an option. When I determine the version how can I make the edits from within vi as described?
# 2  
Old 02-08-2012
try
%s/ /\\r/g
This User Gave Thanks to kalpeer For This Post:
# 3  
Old 02-08-2012
Have you tried using /usr/xpg4/bin/vi instead?
This User Gave Thanks to Scrutinizer For This Post:
# 4  
Old 02-08-2012
The action you describe is what I would have expected actually. You need to enter a control character so press CTRL-V which allows entry of a control character, then press enter like this:

Code:
:%s/ /<CTRL-V><Enter>/g

Note when you press CTRL-V you will see a circumflex appear to indicate its waiting for the control character. When you press Enter you will see it change to ^M (which is actually 1 character, a control character). Try it, you'll see.

I'm on Sun 5.8 by the way.

Last edited by gary_w; 02-08-2012 at 11:28 AM..
This User Gave Thanks to gary_w For This Post:
# 5  
Old 02-08-2012
Quote:
Originally Posted by kalpeer
try
%s/ /\\r/g
Nope - replaces all spaces with \\r

Quote:
Originally Posted by Scrutinizer
Have you tried using /usr/xpg4/bin/vi instead?
I did try this just now and thankfully I do have access to this editor but I was unable to achieve the desired result. If there's something I would try other than the sed commands I or kalpeer listed I'm not aware of it but I'll research further the differences between your suggestion and the usual vi I use.

Quote:
Originally Posted by gary_w
The action you describe is what I would have expected actually. You need to enter a control character so press CTRL-V which allows entry of a control character, then press enter like this:

Code:
:%s/ /<CTRL-V><Enter>/g

Note when you press CTRL-V you will see a circumflex appear to indicate its waiting for the control character. When you press Enter you will see it change to ^M (which is actually 1 character, a control character). Try it, you'll see.

I'm on Sun 5.8 by the way.
This did work for me! How rude of vi! I'll try out other control characters - thank you all for your help.
# 6  
Old 02-08-2012
Nothing rude about it! lol. That's how UNIX is designed to work. You need a way to tell vi to ignore the following key sequence as command, and read it as the character itself instead. The designers chose the CTRL-V sequence to do this, that's all.

Here's a table that shows control characters for various keys like TAB and ESC, etc that may come in handy: ASCII Table - table of ASCII codes.

You can enter control characters in the same way too. See what happens when you type this:
Code:
$ echo "Hello<CTRL-V><TAB><CTRL-V><TAB>world"

# 7  
Old 02-16-2012
I have one other problem - the nbsp character (\255)...I realise to enter ctrl character mode I press CTRL + V, but what do I enter to represent the nbsp? I googled and can't find where it relates to the keyboard.

Edit - actually I found out 255 is not nbsp - or at least my editor is returning ctrl + shift + space as \240.

Edit2 - ok now I see that \255 is a type of hyphen...how do I remove them all other than going to the \255 and using the x command to erase it?
Code:
[user@hostname]echo -e "\255"
-

---------- Post updated 02-16-12 at 11:27 AM ---------- Previous update was 02-15-12 at 05:42 PM ----------

I got the answer sort of - I use the following in vi to remove the \255's:
Code:
:%!tr -d '\255'


Last edited by MaindotC; 02-15-2012 at 06:53 PM..
 
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. AIX

Apache 2.4 directory cannot display "Last modified" "Size" "Description"

Hi 2 all, i have had AIX 7.2 :/# /usr/IBMAHS/bin/apachectl -v Server version: Apache/2.4.12 (Unix) Server built: May 25 2015 04:58:27 :/#:/# /usr/IBMAHS/bin/apachectl -M Loaded Modules: core_module (static) so_module (static) http_module (static) mpm_worker_module (static) ... (3 Replies)
Discussion started by: penchev
3 Replies

2. Shell Programming and Scripting

Bash script - Print an ascii file using specific font "Latin Modern Mono 12" "regular" "9"

Hello. System : opensuse leap 42.3 I have a bash script that build a text file. I would like the last command doing : print_cmd -o page-left=43 -o page-right=22 -o page-top=28 -o page-bottom=43 -o font=LatinModernMono12:regular:9 some_file.txt where : print_cmd ::= some printing... (1 Reply)
Discussion started by: jcdole
1 Replies

3. UNIX for Dummies Questions & Answers

Using "mailx" command to read "to" and "cc" email addreses from input file

How to use "mailx" command to do e-mail reading the input file containing email address, where column 1 has name and column 2 containing “To” e-mail address and column 3 contains “cc” e-mail address to include with same email. Sample input file, email.txt Below is an sample code where... (2 Replies)
Discussion started by: asjaiswal
2 Replies

4. Solaris

The slices "usr", "opt", "tmp" disappeared!!! Help please.

The system don't boot. on the screen appears following: press enter to maintenance (or type CTRL-D to continue)...I checked with format command. ... the slices "0-root","1-swap","2-backup" exist. ...the slises "3-var","6-usr" -unassigned. :( (16 Replies)
Discussion started by: wolfgang
16 Replies

5. 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

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

ps -ef | grep "string1" "string2" " "string3"

Hi all, can any one suggest me the script to grep multiple strings from ps -ef pls correct the below script . its not working/ i want to print OK if all the below process are running in my solaris system. else i want to print NOT OK. bash-3.00$ ps -ef | grep blu lscpusr 48 42 ... (11 Replies)
Discussion started by: steve2216
11 Replies

8. Shell Programming and Scripting

cat $como_file | awk /^~/'{print $1","$2","$3","$4}' | sed -e 's/~//g'

hi All, cat file_name | awk /^~/'{print $1","$2","$3","$4}' | sed -e 's/~//g' Can this be done by using sed or awk alone (4 Replies)
Discussion started by: harshakusam
4 Replies

9. UNIX for Dummies Questions & Answers

Explain the line "mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'`"

Hi Friends, Can any of you explain me about the below line of code? mn_code=`env|grep "..mn"|awk -F"=" '{print $2}'` Im not able to understand, what exactly it is doing :confused: Any help would be useful for me. Lokesha (4 Replies)
Discussion started by: Lokesha
4 Replies
Login or Register to Ask a Question