Assistance Needed With Find/Replace in Vi


 
Thread Tools Search this Thread
Top Forums UNIX for Advanced & Expert Users Assistance Needed With Find/Replace in Vi
# 1  
Old 01-20-2010
Question Assistance Needed With Find/Replace in Vi

Hello All

I have always had a question about find and replace in Vi. As this uses Vi, sed, and RegEx I never knew how or where to post the question but I thought I would give it a shot here. Say I have a text file filled with the following:

Code:
Sue, your IP address is 192.168.1.10 which is in the office.
Bob, your IP address is 192.168.1.20 which is in the conference room.
Dan, your IP address is 192.168.1.30 which is in the store room.
Sam, your IP address is 192.168.1.40 which is in the lobby.
Jon, your IP address is 192.168.1.50 which is in the kitchen.

Now say I want to change it to:

Code:
Sue, your IP address is 192.168.1.10 for today, which is in the office.
Bob, your IP address is 192.168.1.20 for today, which is in the conference room.
Dan, your IP address is 192.168.1.30 for today, which is in the store room.
Sam, your IP address is 192.168.1.40 for today, which is in the lobby.
Jon, your IP address is 192.168.1.50 for today, which is in the kitchen.

I am not sure how to add the " for today" bit without deleting the rest of the line.

The following RegEx is as far as I can take it. The "???" marks the spot where I need help.

Code:
:%s/address is [0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}/??? for today/

I have seen some use of a $1 variable but I haven't had much luck with it. Would anybody be kind enough to clue me in to the secret?

Thanks for reading and have a good day. Smilie
# 2  
Old 01-20-2010
Hello,

Perhaps it's not what you're looking for, but I would replace the "which is" part by "for today, which is":
Code:
%s/which\ is/for\ today,\ which\ is/g

HTH,
Loïc.
# 3  
Old 01-20-2010
Hi.

Code:
:%s/which/for today, &/

$1 is typically a positional parameter used in a script, or some programs which accept arguments. Regular expressions use a different notation, such as \1, \2, etc, and the & used above means:

Quote:
An ampersand (``&'') appearing in the replacement is replaced by the string matching the RE
HTH
# 4  
Old 01-20-2010
I must apologise, I believe I gave a bad example. I had to come up with it pretty quick and probably didn't do a good job. What I am looking for is a way to search for part of the string that is variable but with a known pattern, for example an IP address:

Code:
[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}

and add/remove/change things at that part in the string without affecting the rest of the original string or the variable pattern. Which in this example is the IP address. Let me know if I am not making myself clear.

Thanks for reading and replying. Smilie
# 5  
Old 01-21-2010
Hi NoSalt.

Your regular expression is generally OK, just need to escape the curly brackets:

Code:
:%s/[0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]\{1,3\}/& for today,/

Gives:
Code:
Sue, your IP address is 192.168.1.10 for today, which is in the office.
Bob, your IP address is 192.168.1.20 for today, which is in the conference room.
Dan, your IP address is 192.168.1.30 for today, which is in the store room.
Sam, your IP address is 192.168.1.40 for today, which is in the lobby.
Jon, your IP address is 192.168.1.50 for today, which is in the kitchen.

Another version that works is:
Code:
:%s/[0-9\.]\+/& for today,/


Last edited by Scott; 01-21-2010 at 10:44 AM..
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Archiving assistance needed date to month

We have year folder say in a path /opt/informat/Archive a folder 2012. And in the same folder /opt/informat/Archive we have different folders month based, like 201210, 201211, 201212, this have data for each month, ie files. Now time to time i need to move the monthly folders to the main folder... (1 Reply)
Discussion started by: raghavraok
1 Replies

2. Shell Programming and Scripting

Assistance needed for pattern matching

Hi, Below are input files:- File1:- 1: ### CREATE TABLE ## 2: SOMETHING ELSE 1 3: ### CREATE TABLE ## 4: ### CREATE <spaces> 5: TABLE ### 6:SOMETHING ELSE 2 7: ## CREATE 8: <spaces> TABLE ### 9: SOMETHING ELSE 3 File2:- Similar Format... Desired 1 Output File:- (3 Replies)
Discussion started by: kishal
3 Replies

3. Shell Programming and Scripting

assistance needed to add 2 other routines to my script

Hello guys, In my script, I need to add two other routines where I Manipulate the files with a 'x' The routine looks at CLI named qip-getobjectprof that references a input file named hosts_list.txt Then I use the CLI named qip-setobject to set the orignal name with an 'x'and move the... (3 Replies)
Discussion started by: richsark
3 Replies

4. Shell Programming and Scripting

Assistance needed with perl script

Ok, theres a log file containing the below. Lets call the logfile log_fantastic: 2009/03/16 21:42:45 USER: tonnabo - MAC: 0014BF2D385A - STATUS_ID: 30 - STATE: ERROR 2009/03/16 21:42:45 USER: tonnabo - MAC: 001310AC120D - STATUS_ID: 15 - STATE: OK 2009/03/16 21:42:45 USER: tonnabo - MAC:... (5 Replies)
Discussion started by: SkySmart
5 Replies

5. Shell Programming and Scripting

awk: find and replace in certain field only, help needed

I got a sample file like this. $ cat test 12|13|100|s 12|13|100|s 100|13|100|s 12|13|100|s I want to replace all 100 by 2000 only in 3rd field using "awk" This is replacing all 100's :-( $ awk -F "|" '{gsub( /100/,"2000");print}' test 12|13|2000|s 12|13|2000|s 2000|13|2000|s... (5 Replies)
Discussion started by: jkl_jkl
5 Replies

6. UNIX for Dummies Questions & Answers

Yellow Book assistance needed

Has anyone worked with yellow book in a unix/linux environment? If so, could you provide me with more answers around this? (2 Replies)
Discussion started by: FL1
2 Replies

7. UNIX for Dummies Questions & Answers

Assistance needed.

the command "nawk" returns the error command cannot be found in my unix system. Is there a specific library i need to have to use this command? I tried, the whereis command and it returns nothing. if there is nothing to do, what command can i use to replace this nawk command? Appreciate some... (4 Replies)
Discussion started by: 12yearold
4 Replies

8. UNIX for Dummies Questions & Answers

Find and Replace code help needed

I have a file "dbshot.xml" that contains lines that need replacing in a batch format but the parameters are based on two lines. Ex. <role roletype="01"> <status>1 needs to be changed to <role roletype="01"> <status>0 I can't use simply "<status>1" replace since the... (2 Replies)
Discussion started by: E Orgill
2 Replies

9. UNIX for Dummies Questions & Answers

NFS mount assistance needed...

Hello all - I've searched this forum, but was unable to find out the info I need. I'm trying to mount (nfs mount) a directory on another box from my Linux machine. The mount point resides on a Tru64 digital unix machine. The machine trying to do the mount is a Linux machine (redhat 8.0). ... (2 Replies)
Discussion started by: Heron
2 Replies
Login or Register to Ask a Question