vi substitute


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting vi substitute
# 1  
Old 01-05-2010
vi substitute

My question is how would I substitute for ceratain number of occurences in a line? If this is my input
Code:
rjohns BFSTDBS01 Standard Silver NPRO30DINCR  2 Client

Is it possible to change the first 3 occurences of space " " to a comma?

Last edited by Yogesh Sawant; 01-06-2010 at 03:10 AM.. Reason: added code tags
# 2  
Old 01-05-2010
Code:
:s/ /,/3

or by awk:
Code:
echo "rjohns BFSTDBS01 Standard Silver NPRO30DINCR 2 Client" |awk '{for (i=1;i<=3;i++) sub(/ /,",")}1'

# 3  
Old 01-05-2010
I thought something like:
Code:
:,$s/ /,/3

But that replaces the third space on every line with a comma using vim. So you would have to do:
Code:
:,$s/ /,/1

three time instead.

Or using sed:
Code:
sed -e 's/ /,/' -e 's/ /,/' -e 's/ /,/'


Quote:
:s/ /,/3
Subststiutes the first space on the next three lines for me using vim. Smilie
# 4  
Old 01-05-2010
Code:
sed 's/ /,/;s/ /,/;s/ /,/' file

Oops already posted above..

Last edited by Scott; 01-07-2010 at 12:07 PM..
# 5  
Old 01-06-2010
May be instead of executing it 3 times., Use the following.,

Code:
:s/ /,/gc

While it asks for confirmation, give yes only to the first three.

In vim substitution, the range specifier is for number of lines, and not for the number of occurrences.

Code:
:1,3s/ /,/

The above is for first to third line.

And the count is for.

From help :s
Code:
An optional number that may precede the command to multiply or iterate the command.

@TonyFullerMalv: So thats why it replaces first space on next three lines.
# 6  
Old 03-03-2010
MySQL

One more way for substitution in vim.

if you don't know the line numbers.

select the line in escape mode using " Shift + v " or "Ctrl+v".

Then press Colan ":" and execute the substitution command in command mode.

see the example:

Code:
:'<,'>s/ /,/g

It will substitute the space into comma, only selected lines.

Last edited by ungalnanban; 03-03-2010 at 05:07 AM..
# 7  
Old 03-03-2010
Using sed:

Code:
sed -e 's/\([^ ]*\) \([^ ]*\) \([^ ]*\)\(.*\)/\1,\2,\3,\4/g' filename

cheers,
Devaraj Takhellambam
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. How to Post in the The UNIX and Linux Forums

Prstat substitute

Hello All, I have a shell script where with the lines below: echo "${v_sd_dateTime},${RUN_QUEUE_SIZE},${LOAD_AVERAGE},${v_sd_load_list},${v_sd_thread_count_list}" >> ${v_sd_file} Format of the output : 01/05/2005 08:00:00, RUN_QUEUE_SIZE, LOAD_AVG, CPU_PROD1, CPU_PROD2, THREADS_PROD1,... (1 Reply)
Discussion started by: Supriya_84
1 Replies

2. Shell Programming and Scripting

Grep and substitute?

I have to parse ASCII files, output the relevant data to a comma-delimited file and load it into a database table. The specs for the file format have been recently updated and one section is causing problems. This is the original layout for that section. ... (2 Replies)
Discussion started by: alan
2 Replies

3. UNIX for Dummies Questions & Answers

Substitute in VI

Hi there, i am updating a file on UNIX and have many lines as per below : listen:x:37:4:Network Admin:/usr/net/nls: i would like to substitute from the :/usr to the end of the line. so at the moment im using this : :s/"\/$/ /g but i get an error.can anyone help? thank you (3 Replies)
Discussion started by: brian112
3 Replies

4. UNIX for Dummies Questions & Answers

substitute (')

I usually use : Code: awk '{gsub(/xxx/,"yyy");print}' to substitute xxx with yyy. I have a problem substitute an expression like Code: x ' y Because of the ( ' ) Any idea on how to get over this problem? Thanks (2 Replies)
Discussion started by: cosmologist
2 Replies

5. UNIX for Dummies Questions & Answers

substitute file name

correct file names are: *_0.txt *_1.txt incorrect file names are: *_12.txt *_0123.txt *_04321.txt all files that are incorrect need to replace the ending with *_1.txt therefore need to create a loop to find the wrong files in a dir ->that dont end in _1.txt or _0.txt and then... (3 Replies)
Discussion started by: sigh2010
3 Replies

6. Shell Programming and Scripting

How to substitute?

Hi, I have query terms like this: a) apple bannana b) apple bannana AND chickko c) "milk shake" OR Graphes orange whereever there is space substitue with AND operator. I tried like this: (2 Replies)
Discussion started by: vanitham
2 Replies

7. Shell Programming and Scripting

In Help, Substitute Text ...

i'm writing a script that will extract and substitute a certain part of a data. i'm having trouble with the substituting part ... Here's my data looks like: 01/01/08-001-23:46:18-01/01/08-23:50:43 01/01/08-003-23:45:19-01/01/08-23:55:49 01/01/08-005-23:52:18-01/01/08-23:58:52 i want to... (6 Replies)
Discussion started by: solidhelix08
6 Replies

8. UNIX for Dummies Questions & Answers

rm substitute with blacklist

hi! first i want to apologize for two things. my English and (possible) posting in the wrong sub forum (i couldn't find one that fits my question) I am needing a script that can substitute rm. the idea is that the operator can/must delete some folders and files from time to time, when the free... (2 Replies)
Discussion started by: broli
2 Replies

9. UNIX for Dummies Questions & Answers

Substitute Variable

Can anyone tell me what is the purpose of a substitute variable in the unix programming language and give an example where it may be used? Thanks! (0 Replies)
Discussion started by: mmg2711
0 Replies

10. UNIX for Dummies Questions & Answers

Substitute in vi

I know in vi you can do :%s/replaceme/withthis/ but if i want to find all lines say without a # at the begining and I want to put it in how would that command be formatted? I can't figure it out for the life of me. #comment blah1 hey1 grrr1 #comment #blah1 #hey1 #grrr1 (5 Replies)
Discussion started by: kingdbag
5 Replies
Login or Register to Ask a Question