vi + regexp + substitute


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers vi + regexp + substitute
# 1  
Old 12-10-2004
vi + regexp + substitute

Another enigma (for me)

Using VI I edit some files in which I want to erase many lines I don't need anymore

usually I do something like that:
Code:
:%s/line_to_suppress//g

and it is doing fine

but in this case, the pattern to erase contains some special characters

so I do it like that:
Code:
:%s#line_to_suppress_with_special_characters##g

but, the only problem left is that I can't predict what will be the beginning of the line so I wish I could do something like that:
Code:
:%s/*line_to_suppress//g

but of course if I protect the pattern with # to prevent special characters to annoy me... the * don't work anymore

the best way would be to suppress each line containing my pattern, but I don't know how to do that

I'm sure it's pretty easy for many among you, so if one have a bit of time, it would help me a lot Smilie

Thanx
# 2  
Old 12-10-2004
I'm not too sure that I follow - but you can supress the interpretation of metacharacters by backslash escaping them...

e.g.
Code:
:%s/^.*my_patter_has_special_chars\*\/\$\^_in_it.*$//

As you can see, the .* at the beginning and end of line are still treated as metacharacters (as are the anchors).

Cheers
ZB
# 3  
Old 12-10-2004
Quote:
Originally posted by zazzybob
you can supress the interpretation of metacharacters by backslash escaping them...

e.g.
Code:
:%s/^.*my_patter_has_special_chars\*\/\$\^_in_it.*$//

As you can see, the .* at the beginning and end of line are still treated as metacharacters (as are the anchors).
ok but my_pattern_has_special_chars looks like
Code:
blabla 'toto' rep:/titi/toto/

so I protect it between #

if I understand what you mean, I should do like this:
Code:
:%s/^.*blabla\ \'toto\'\ rep\:\/titi\/toto\///

Am I right? (if it is the case, it si ok because my pattern never change)
# 4  
Old 12-10-2004
Quote:
Originally posted by Lomic
if I understand what you mean, I should do like this:
Code:
:%s/^.*blabla\ \'toto\'\ rep\:\/titi\/toto\///

Am I right? (if it is the case, it si ok because my pattern never change)
Looking at that, all you really need to do is
Code:
:%s/^.*blabla 'toto' rep:\/titi\/toto\///

i.e. it's only the slashes that need to be escaped.

Cheers
ZB
# 5  
Old 12-10-2004
Quote:
Originally posted by zazzybob
i.e. it's only the slashes that need to be escaped.
you're right, it is nearly ok now! (good step forward for me)

but one more question Smilie

it erase the lines, but it doesn't suppress them...

any hint?
# 6  
Old 12-10-2004
What do you mean suppress?

Cheers
ZB
# 7  
Old 12-10-2004
Quote:
Originally posted by zazzybob
What do you mean suppress?
File before:
xxxxxxxxxxx
xxxxxxxxxxx
blabla 'toto' rep:/titi/toto/
xxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxx
blabla 'toto' rep:/titi/toto
/blabla 'toto' rep:/titi/toto/
xxxxxxxxxxx
blabla 'toto' rep:/titi/toto/
blabla 'toto' rep:/titi/toto/
xxxxxxxxxxx

File after:
xxxxxxxxxxx
xxxxxxxxxxx

xxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxx


xxxxxxxxxxx


xxxxxxxxxxx

Result I wish to have:
xxxxxxxxxxx
xxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxx
xxxxxxxxxxx
xxxxxxxxxxx

Smilie
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. What is on Your Mind?

A Regexp You Can Use Everywhere

¯\_(ツ)_/¯ bakunin (0 Replies)
Discussion started by: bakunin
0 Replies

2. Shell Programming and Scripting

Gawk and regexp

Hello, This is a problem I've worked on a while and can't figure out. There is a file.txt ..some stuff.. ] ] ..some stuff.. The Awk program is trying to extract the year portion of the birth and death ("98: and "2nd C.") using the below technique #!/bin/awk @include... (5 Replies)
Discussion started by: Mid Ocean
5 Replies

3. Shell Programming and Scripting

Regexp

I would like to extract "1333 Fairlane" given the below text. The word "Building:" is always present. The wording between Building and the beginning of the address can be almost anything. It appears the the hyphen is there most of the time. Campus: Fairlane Business Park Building:... (9 Replies)
Discussion started by: bbaker@copesan.
9 Replies

4. Shell Programming and Scripting

Need help with sed and regexp

Hi everyone, I would really appreciate any help I could get on the following topic. I am not very familiar with reg expressions nor with sed, I just know the basic uses. What I am trying to do is the following: I have a huge text file where I would like to replace all occurnces of a certain... (13 Replies)
Discussion started by: Boxtuna
13 Replies

5. Shell Programming and Scripting

How to do equivalent of /(regexp){0}/ ?

I don't want to have to resort to /()/ though that does work. Effectively, I need to be able to implement /(?:(?:regexp1){0})(regexp2)\D/ to basically match regexp2 as long as it is present and regexp1 is NOT. So, how to do /(regexp){0}/ ? (2 Replies)
Discussion started by: Vi-Curious
2 Replies

6. UNIX for Dummies Questions & Answers

print the line immediately after a regexp; but regexp is a sentence

Good Day, Im new to scripting especially awk and sed. I just would like to ask help from you guys about a sed command that prints the line immediately after a regexp, but not the line containing the regexp. sed -n '/regexp/{n;p;}' filename What if my regexp is 3 word or a sentence. Im... (3 Replies)
Discussion started by: ownins
3 Replies

7. Shell Programming and Scripting

Help with regexp

Hi there! I would like to know how to find and replace all numbers in a *.html file and make them bold. Any help will be appreciated! :) (7 Replies)
Discussion started by: agasamapetilon
7 Replies

8. Shell Programming and Scripting

regexp help

I'd like to know if there is a catchall line for renaming the following patterns: s01e03 -> 01x03 s4e9 -> 04x09 s10e08 ->10x08 and possibly even: 318 -> 03x18 1002 ->10x02 if its the first 3 or first digit number in the string. thanks! (0 Replies)
Discussion started by: TinCanFury
0 Replies

9. Shell Programming and Scripting

perl regexp

What is the easiest way to get full address of *.jpg images from html file using perl? example: http://farm3.static.flickr.com/2397/2126443111_65a810004c.jpg (1 Reply)
Discussion started by: mirusnet
1 Replies

10. UNIX for Advanced & Expert Users

regexp

Hi guys, does anyone know how to test for a regular expression - i want to include it in a script to make sure the variable is a regexp cheers (1 Reply)
Discussion started by: penfold
1 Replies
Login or Register to Ask a Question