vi substitution


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting vi substitution
# 1  
Old 11-06-2010
vi substitution

Hello, I'm trying to do a substitution in vi. which adds a field for the year to a line.
If the line doesnt include a year, it should still add a field (although empty)

the fields are:
Country:number:number:name(and sometimes year)Smilielace
this is a desired in and output:
Code:
 
Sweden:55:32:John 1898 cyclone:Kortsnau
Belize:73:27:Dolal 01:Bodville
should become
Sweden:55:32:John 1898 cyclone:1898:Kortsnau
Belize:73:27:Dolal 01::Bodville

I dont know how you can place a wildcard on a group: I tried this:
Code:
:1,$s/^\(.* \)\([0-9][0-9][0-9][0-9]\)*\(.*\):\(.*\)$/\1\2\3:\2:\4/g

can anybody tell me how it is done porperly?
# 2  
Old 11-07-2010
Hi,

My solution:
Code:
$ # Check Vim Version.
$ vim -h | head -1 | sed 's/\([^(]*\).*/\1/'
VIM - Vi IMproved 7.3

(Inside Vim):
Code:
:%s/\m\%(.\{-}:\)\{3}\(.\{-}\(\d\{4}\).\{-}\|.\{-}\):/&\2:/

Regards,
Birei
# 3  
Old 11-07-2010
If you don't have vim you can do with standard vi but it requires two replaces. First puts extra blank field in the 2nd last position, and 2nd populates year for those that have it:

Code:
%s/.*:/&:/
%s/\(.*\)\([0-9][0-9][0-9][0-9]\)\(.*\)::/\1\2\3:\2:/

You could get a little more specific and ensure date is only in 4th field, but your original replace didn't seem to worry about this. Perhaps 4 digit numbers never appear in fields 1-3?
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Substitution

I am trying to do some substitutions using the substitution operator (:%s) in a text file. I want to replace all A1, A2, A3.......A100 in my text file. I used :%s/A2/SAE/g successfully until A9 but when I use A1, all the A11 to A19 is changed. How do I specify the exact match here? (8 Replies)
Discussion started by: Kanja
8 Replies

2. UNIX for Dummies Questions & Answers

vi substitution help

Hi experts, Could someone help me how to figure out the following substitution? I copied and pasted a column of names from an Excel file into another file in vi. The column of data has last names with dash (hyphens) and apostrophes. My goal is to do the following: 1) remove the apostrophes... (10 Replies)
Discussion started by: onlinelearner02
10 Replies

3. Shell Programming and Scripting

substitution help

How do i substitute ' with space in a file using sed or awk i am getting the following two scenarios 1) xyz'd with xyz d if i use sed 's/xyz\\\'d/xy z/g' it is taking ' after \ as closing expr for substitution 2) xyz';d with xyz d please advice (8 Replies)
Discussion started by: mad_man12
8 Replies

4. UNIX for Dummies Questions & Answers

help with substitution

Hello, I have a file with 10,000+ records which look like this: Image3992170.tif 4/21/200811:42:09AM 3,373.13KB Image3993265.tif 4/11/20087:17:58PM 2,369.72KB Image3996764.tif 5/2/200811:01:28AM 2,155.87KB Image3997700.tif ... (4 Replies)
Discussion started by: lotusdeva
4 Replies

5. Shell Programming and Scripting

Substitution

All, I have this text document that contains a listing(See below). What i would like to ask is how i could extract just the information i need which is the files name (CWS*****.***.gz) If anyone has any suggestions i would be very grateful. I am sure its relatively simple but i just... (6 Replies)
Discussion started by: Andyp2704
6 Replies

6. Shell Programming and Scripting

Difference between "Command substitution" and "Process substitution"

Hi, What is the actual difference between these two? Why the following code works for process substitution and fails for command substitution? while IFS= read -r line; do echo $line; done < <(cat file)executes successfully and display the contents of the file But, while IFS='\n' read -r... (3 Replies)
Discussion started by: royalibrahim
3 Replies

7. Shell Programming and Scripting

SED Substitution

Hi , I am stuck up in the below scenario:- I need to read a file name (eg A.txt) name frm another file (eg B.txt) and then I need to search for a particular expression in A.txt and substitute it with another expression. How can I use SED inside SHELL Scripting and command prompt as well to... (1 Reply)
Discussion started by: shubhranshu
1 Replies

8. Shell Programming and Scripting

Substitution using SED

Hi , I am stuck up in the below scenario:- I need to read a file name (eg A.txt) name frm another file (eg B.txt) and then I need to search for a particular expression in A.txt and substitute it with another expression. How can I use SED inside SHELL Scripting and command prompt as... (2 Replies)
Discussion started by: shubhranshu
2 Replies

9. UNIX for Dummies Questions & Answers

Need help in substitution!!!!

In a file I want to globally change a "|" charater by a new line character. I am using the command 1,$s/\|/??/g Can anybody say what should I put in place of ?? in the above command? (3 Replies)
Discussion started by: uLearner
3 Replies

10. Shell Programming and Scripting

substitution

I am trying to substituted a variable to a file using sed. However, the value of that variable is not being substituted. Here is an example of my code. lf=' ' v_whole="${1} ${2} ${3} $lf" cp ${IPPDIR}/ctl/fax_sub_text_a.${4}.${5}.txt... (1 Reply)
Discussion started by: supercbw
1 Replies
Login or Register to Ask a Question