sed and regular expressions


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting sed and regular expressions
# 1  
Old 10-09-2009
sed and regular expressions

Hi,
There's a bug using JavaDoc that generates an error if a tag <a...> is found in a javadoc comment, which is not a HTML reference. For example this error is produced with generics. I want to insert an space between "<" and "a". Expression is able to find where this happens using find and grep:
Quote:
find . -iname "*.java" | xargs grep -E "[:space:]*\*+.*<[aA][^[:space:]].*"
But i'm not able to generate the output expression. I don't know how keep the first part of expressión (until "<") add an space, and concatenate with the second part. For example, from:
Quote:
* List<AlmacenOrdenacion>). Debería pasar...
To:
Quote:
* List< AlmacenOrdenacion>). Debería pasar...
Just and a space between "List<" and "Almacen".
I'm trying to get all lines using above find command. Use cut -d "<" to separate parts, add an space and finally use sed to substitute in file. But I guess there must be an easy way using sed with regular expressions.

Anyone can help me?

Thanks.
# 2  
Old 10-09-2009
Not sure if I got it - made it a bit more generic so it doesn't matter what kind of character comes after the "<":
Code:
echo '* List<AlmacenOrdenacion>). Debería pasar...'| sed 's/</< /'
* List< AlmacenOrdenacion>). Debería pasar...

# 3  
Old 10-13-2009
I'll try to ask the question in other way. In my Java file I have a line with this text:
Code:
* List<AlmacenOrdenacion>). Deberá pasar el id del recinto y el tipo de

And I want to change to:
Code:
* List< AlmacenOrdenacion>). Deberá pasar el id del recinto y el tipo de

Just add an space between "List<" and "AlmacenOrdenacion", because of this Javadoc bug.

Now I'm trying to run next command, but it doesn't work. The file doesn't change at all.
Quote:
sed -i 's/ * List<AlmacenOrdenacion>). Deberá pasar el id del recinto y el tipo de/ * List< AlmacenOrdenacion>). Deberá pasar el id del recinto y el tipo de/g' ./AlmacenBo.java
Why the file "./AlmacenBo.java" is not modified? It really has a line with that text.

Thanks.
# 4  
Old 10-13-2009
Code:
$ cat > AlmacenBo.java
* List<AlmacenOrdenacion>). Deberá pasar el id del recinto y el tipo de


$sed -i 's/List</List< /' AlmacenBo.java

$ cat AlmacenBo.java
* List< AlmacenOrdenacion>). Deberá pasar el id del recinto y el tipo de

# 5  
Old 10-13-2009
I can't tell why sed -i is not working. Maybe write it to a tmp file and mv it back to the original or use perl -i or have something like:

Code:
printf 'sed "$\nr infile2\ns/</< /\nw! infile2\n1d\nq!'| ex -

# 6  
Old 10-13-2009
Quote:
Originally Posted by skmdu
Code:
$ cat > AlmacenBo.java
* List<AlmacenOrdenacion>). Deberá pasar el id del recinto y el tipo de


$sed -i 's/List</List< /' AlmacenBo.java

$ cat AlmacenBo.java
* List< AlmacenOrdenacion>). Deberá pasar el id del recinto y el tipo de

I can't do that because it will replace all List<..> occurrences, and project won't compile.
Only javadoc comments where generic begins with an "A" must be replaced. It's there where bug makes javadoc fail.

Quote:
Originally Posted by zaxxon
I can't tell why sed -i is not working. Maybe write it to a tmp file and mv it back to the original or use perl -i or have something like:

Code:
printf 'sed "$\nr infile2\ns/</< /\nw! infile2\n1d\nq!'| ex -

I'll try, though I don't understand syntax...

Could be because of encoding charset? If I edit file with gedit I see words like "Deberá" correctly, but with sed (or cat) I see "Deber�". It's Spanish and that must be without orthographic mistakes. If that is the problem, is there a way to say sed which is the encoding?

Thanks Smilie

---------- Post updated at 02:08 PM ---------- Previous update was at 01:28 PM ----------

I finally solved!!!
Just before running sed command, I use iconv to convert encoding from ISO-8859-1 to UTF-8. Then sed has no problems to replace.

Thanks all.

Last edited by AlbertGM; 10-13-2009 at 08:48 AM..
# 7  
Old 10-13-2009
That thing with printf and ex I got from a post from vgersh99; excellent thing to print the commands for ex, which has a syntax similar to sed etc. to instruct it what to do with the file. Glad you made it.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Regular expressions

I need to pick a part of string lets stay started with specific character and end with specific character to replace using sed command the line is like this:my audio book 71-skhdfon1dufgjhgf8.wav' I want to move the characters beginning with - end before. I have different files with random... (2 Replies)
Discussion started by: XP_2600
2 Replies

2. Shell Programming and Scripting

awk or sed or python for regular expressions ?

Linux 6.X environments (RHEL, Oracle Linux ) I could write basic shell scripts in bash. In my spare time, I was planning to learn awk or sed to deal with regular expression tasks I have to deal with. But, I gather that python is gaining popularity these days and I came to know that python has a... (5 Replies)
Discussion started by: John K
5 Replies

3. Shell Programming and Scripting

Issue with sed and regular expressions

I have a file, each line has the date and time twice, once at the start of the line, and again half way along. to neaten things up, and to make it easier to read i'm removing one set. Wasn't as easy as identify the text and remove, as it'd remove both. So i added some text at the beginning of... (4 Replies)
Discussion started by: chr15b
4 Replies

4. Shell Programming and Scripting

Help with regular expressions

I have a file that I'm trying to find all the cases of phone number extensions and deleting them. So input file looks like: abc x93825 def 13234 x52673 hello output looks like: abc def 13234 hello Basically delete lines that have 5 numbers following "x". I tried: x\(4) but it... (7 Replies)
Discussion started by: pxalpine
7 Replies

5. Shell Programming and Scripting

SED regular expressions

Hi, I need to replace <field name="ID">1</field> with <field name="STATION_ID">01</field> how can i do it? (3 Replies)
Discussion started by: noppeli
3 Replies

6. Shell Programming and Scripting

SED: Print range, exclude regular expressions.

Ok, so I get that: sed -n '/START/,/END/p' file ...will print every line from START to END inclusive, but I don't want to see START or END. Apart from the obious: sed -n '/START/,/END/p' file | grep -v "START" | grep -v "END" ...is there a simpler way of doing this? Thanks as always! (2 Replies)
Discussion started by: cs03dmj
2 Replies

7. Shell Programming and Scripting

sed and regular expressions problem

Hi Im trying to use sed to change some files which I'll describe here: I want to use a regular expression to grab the <body> tag from a document. However, the <body> tag can look different so the regular expression used will take care of that and "include" all types of bodies, in example:... (4 Replies)
Discussion started by: hjalle
4 Replies

8. UNIX for Dummies Questions & Answers

regular expressions variables in sed

I am trying to pass a regular expression variable from a simple script to sed to remove entries from a text file e.g. a='aaaa bbbb cccc ...|...:' then executing sed from the script sed s'/"'$a"'//g <$FILE > $FILE"_"1 my output file is always the same as the input file !! any... (1 Reply)
Discussion started by: Daniel234
1 Replies

9. Shell Programming and Scripting

Regular expressions in sed

I'm using sed to alter a parameter file used in another process. Basically, the file is a template containing a few variables which need to be replaced at runtime. The problem is that using sed with filenames that contain the / character causes matches to fail. I've tried doing an escaped... (2 Replies)
Discussion started by: mfreemantle
2 Replies

10. UNIX for Dummies Questions & Answers

Regular expressions in sed

I'm using sed to alter a parameter file used in another process. Basically, the file is a template containing a few variables which need to be replaced at runtime. The problem is that using sed with filenames that contain the / character causes matches to fail. eg:... (3 Replies)
Discussion started by: mfreemantle
3 Replies
Login or Register to Ask a Question