Help with sed substitution / regex


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Help with sed substitution / regex
# 1  
Old 03-17-2014
Help with sed substitution / regex

Hi all, please can anyone show me how to use sed and regular expressions to achieve the following.

If a line contains a capital A followed by exactly 5 or 6 characters followed by an angled bracket then insert an asterix before the angled bracket.

So:

Code:
XCONFIGA12345<X

Becomes:

Code:
XCONFIGA12345*<X

Many thanks in advance.

Mark
# 2  
Old 03-17-2014
Is this a homework assignment?
# 3  
Old 03-17-2014
Haha, not quite - work!
We have a content checker to detect uuencoded strings before it enters a very strict environment and I need to detect that rule above to prevent what could be a uuencoded string.

---------- Post updated at 02:02 PM ---------- Previous update was at 01:43 PM ----------

So I think the regex would be:

Code:
A.{5,6}<

But I am very inexperienced with sed so any help on that part would be much appreciated.
# 4  
Old 03-17-2014
You could try something like:
Code:
sed -e 's/\(A......\)</\1*</' -e 's/\(A.....\)</\1*</' file

or
Code:
sed -e 's/\(A.\{5,6\}\)</\1*</' file

both of which (with the following text in file):
Code:
XCONFIGA1234<X
XCONFIGA12345<X
XCONFIGA123456<X
XCONFIGA1234567<X

produce the output:
Code:
XCONFIGA1234<X
XCONFIGA12345*<X
XCONFIGA123456*<X
XCONFIGA1234567<X


Last edited by Don Cragun; 03-17-2014 at 04:17 PM.. Reason: Add alternative
This User Gave Thanks to Don Cragun For This Post:
# 5  
Old 03-17-2014
Thanks, and I got your alternative on my own too - so I'll go to bed happy tonight.

I'm guessing the ( stuff ) puts the expression into a group called \1 - does that mean I could define other groups and use \2 \3 etc?

Mark
# 6  
Old 03-17-2014
Quote:
Originally Posted by Jedimark
Thanks, and I got your alternative on my own too - so I'll go to bed happy tonight.

I'm guessing the ( stuff ) puts the expression into a group called \1 - does that mean I could define other groups and use \2 \3 etc?

Mark
Yes. What you called a "group", the standards refer to as a "subexpression". In cases where subexpressions are nested, the opening \( sequence determines the subexpression number. The number of subexpressions allowed in a BRE isn't usually limited, but back references (\digit) in the replacement string can only reference the 1st nine subexpressions. (In a replacement string, \10 refers to the string match by the 1st subexpressoin followed by a 0; not the string matched by the 10th subexpression.)
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Problem with use of the ? wildcard in regex substitution.

I'm trying to use Larry Wall's rename (prename) tool to rename multiple files: $ ls -1 blar.m4mp3 BLAH.mpmp3 bar foo.m4mp3 foo bar.mpmp3 I'm trying to fix the extensions so they're all .mp3: rename 's/m?mp3/mp3/' *mp3 I expect m?mp3 to match the extensions,... (3 Replies)
Discussion started by: ropers
3 Replies

2. Shell Programming and Scripting

sed substitution

Hi everyone, I need very simple sed command to change a parameter in a text file. I have a line in this text which is like set xx 0.5 A program reads this file and does some algebraic calculations. So to make a parameter scan I need to change the value of xx. I thought I can do... (7 Replies)
Discussion started by: hayreter
7 Replies

3. UNIX for Dummies Questions & Answers

sed substitution

How can you use sed with a line of code that reads: 67899:Bill:Williams:Maple Dr.:45908600 Let us say we want to replace Maple Dr. with Oak St. (1 Reply)
Discussion started by: yonkers062986
1 Replies

4. Shell Programming and Scripting

sed substitution

Hello, I have two files. File1 is normal txt file and File2 contains list of line numbers. e.g. File2: 3 6 9 ..... I need to replace a character in File1 in lines (taken from File2). For that I am using a "for" loop: for i in $(cat File2) do sed "$i s/Y/N/" File1 done but my... (3 Replies)
Discussion started by: shekhar2010us
3 Replies

5. Shell Programming and Scripting

Converting perl regex to sed regex

I am having trouble parsing rpm filenames in a shell script.. I found a snippet of perl code that will perform the task but I really don't have time to rewrite the entire script in perl. I cannot for the life of me convert this code into something sed-friendly: if ($rpm =~ /(*)-(*)-(*)\.(.*)/)... (1 Reply)
Discussion started by: suntzu
1 Replies

6. UNIX for Dummies Questions & Answers

Help with sed substitution

I'm a noob to unix, and I have a line of data like the following: title=Boston|tcolor=green|desc=Large city in New England|url=www.boston.com Is there a way to change a field value with sed substitution? (i.e. change tcolor=green to tcolor=blue) I figured out: sed... (19 Replies)
Discussion started by: stabby
19 Replies

7. Shell Programming and Scripting

Help with sed/substitution!

I have file.txt 1 4 7 9 3 I want to replace the tabs with a space, but my code doesn't work. cat file.txt | sed 's/"\t"/ /g' > t.txt But file is still the same. Numbers seperated by tabs instead of spaces. Help? (2 Replies)
Discussion started by: Bandit390
2 Replies

8. Shell Programming and Scripting

SED Substitution

Hi guys, Can u please help me to replace (-) with (/) in a file containing no of records using "sed " command in unix. thanks in advance. subhendu (5 Replies)
Discussion started by: subhendu81
5 Replies

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

10. UNIX for Dummies Questions & Answers

sed substitution

Hi, I have a set of files containing strings like I.TEST1_TEST2 or B.ESSA_ESSB for example. Does somebody know how to substitute these strings whith the same name and an extension "_V1" (ie. I.TEST1_TEST2_V1) using sed command or else ? (3 Replies)
Discussion started by: jo_aze
3 Replies
Login or Register to Ask a Question