How To Use sed To Remove Text Between '/*'?


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers How To Use sed To Remove Text Between '/*'?
# 8  
Old 03-21-2013
The current sed script does not allow a * character in comments.
Code:
If x=1 then /* this is an if statement */
/* new *line* added */ echo "hello" /* 2nd comment */;

---------- Post updated at 03:34 AM ---------- Previous update was at 03:28 AM ----------

But
Code:
sed 's|/\*.*\*/||g'

is even worse, because of the "greedy" .*
# 9  
Old 03-21-2013
I noticed the same thing. But I didn't want to be too much of a stickler. Thank you for pointing out the defect. /* */ comments are problematic to deal with.
# 10  
Old 03-21-2013
Quote:
Originally Posted by MadeInGermany
The current sed script does not allow a * character in comments.
Code:
If x=1 then /* this is an if statement */
/* new *line* added */ echo "hello" /* 2nd comment */;

---------- Post updated at 03:34 AM ---------- Previous update was at 03:28 AM ----------

But
Code:
sed 's|/\*.*\*/||g'

is even worse, because of the "greedy" .*
I don't know to which script you're referring when you say "current sed script". The OP's sed doesn't handle comments at all. Mine does and it allows * in the comment.

You are correct in that the greedy .* will cause problems with multiple comment closing sequences, */, on one line. Thank you for pointing that out, since I neglected to mention it. However, your two comments on a line scenario is extremely unlikely. More likely, I suspect, would be a collision with a string literal.

As I said in my first post, it works with the sample data and, if anything more complicated is needed, perhaps a tool that understands the language should be used. A possible workaround would disallow the * in comments by changing .* to [^*]*. A better solution is to use a tool which supports non-greedy quantifiers, such as perl's .*?.

Even if non-greedy quantifiers are used, the solution is still incomplete even for the simple, single-comment on a single line scenario: a string literal which looks like a comment would be nuked.

Regards,
Alister

---------- Post updated at 05:12 AM ---------- Previous update was at 05:10 AM ----------

Quote:
Originally Posted by hanson44
I noticed the same thing. But I didn't want to be too much of a stickler. Thank you for pointing out the defect. /* */ comments are problematic to deal with.
Let your inner stickler loose. Smilie

Last edited by alister; 03-21-2013 at 06:23 AM..
# 11  
Old 03-21-2013
Yes, you are probably right, a tool that understands the language is needed.

Code:
$ cat temp.x
Before /* with ** in middle */ After /* Another comment */
Before /* with ** in middle */ After
Before /* with / in middle */ After /* Another comment */
Before /* with / in middle */ After
Before /* nothing weird in middle */ After
Before /* nothing weird in middle */ After /* Another comment */

$ cpp temp.x | grep -v "^#"
Before After
Before After
Before After
Before After
Before After
Before After

Of course, cpp expands macros, so that's a flaw. But at least cpp handles comments perfectly, which is what the original poster wanted.
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Remove bracket including text inside with sed

Hello, I could not remove brackets with text contents myfile: Please remove the bracket with text I wish to remove: I tried: sed 's/\//' myfile It gives: Please remove the bracket with text A1 I expect: Please remove the bracket with text Many thanks Boris (2 Replies)
Discussion started by: baris35
2 Replies

2. Shell Programming and Scripting

sed to remove text from file

Trying to use sed to, in-place, remove specific text from a file. Since there are / in the text I use | to escape that character. Thank you :). sed -i -e 's|xxxx://www.xxx.com/xx/xx/xxx/.*/|' /home/cmccabe/list sed: -e expression #1, char 51: unterminated `s' command (4 Replies)
Discussion started by: cmccabe
4 Replies

3. Shell Programming and Scripting

Remove text with sed or anything?

Hi there, my first post, so you might find my noobness ;) I need help to fix a thing, find /mnt/fs01/gfx/ -iname "*.rar" > gfx.txt Gives this contained textfile: /mnt/fs01/gfx/toba/toba.rar /mnt/fs01/gfx/zeta/zimba.rar /mnt/fs01/gfx/brashe/getha.rar And now the tricky part (for... (3 Replies)
Discussion started by: yabbah
3 Replies

4. Shell Programming and Scripting

sed to remove partial text in one line only

I have test.xml XML file like <Report account="123456" start_time="2014-09-08T00:00:00+00:00" end_time="2014-09-10T23:59:59+00:00" user="Dollar Tree" limit="1000000" more_sessions="some text "> <Session ......rest of xml............... I need output like <Report> <Session ......rest of... (3 Replies)
Discussion started by: kumars1331@gmai
3 Replies

5. Shell Programming and Scripting

Remove text from n position to n position sed/awk

I want to remove text from nth position to nth position couple of times in same line my line is "hello is there anyone can help me with this question" I need like this ello is there anyone can help me with question 'h' is removed and 'this' removed from the line. I want to do this... (5 Replies)
Discussion started by: elamurugu
5 Replies

6. Shell Programming and Scripting

Sed or awk script to remove text / or perform calculations from large CSV files

I have a large CSV files (e.g. 2 million records) and am hoping to do one of two things. I have been trying to use awk and sed but am a newbie and can't figure out how to get it to work. Any help you could offer would be greatly appreciated - I'm stuck trying to remove the colon and wildcards in... (6 Replies)
Discussion started by: metronomadic
6 Replies

7. Shell Programming and Scripting

sed to remove 1st two characters every line of text file

what is the sed command to remove the first two characters of every line of a text file? each line of the text file has the same amount of characters, and they are ALL NUMERIC. there are hundreds of lines though. for example, >cat file1.txt 10081551 10081599 10082234 10082259 20081134... (20 Replies)
Discussion started by: ajp7701
20 Replies

8. Shell Programming and Scripting

Remove text from a csv file using sed

I am trying to remove the ita from this file: "1234ita","john","smith" "56789ita","jim","thomas" the command i am using is: sed '/^ita/d' infile.csv > outfile.csv it is running but doing nothing, very rarely use sed so trying to learn it any help would be appreciated (2 Replies)
Discussion started by: Pablo_beezo
2 Replies

9. Shell Programming and Scripting

sed over writes my original file (using sed to remove leading spaces)

Hello and thx for reading this I'm using sed to remove only the leading spaces in a file bash-280R# cat foofile some text some text some text some text some text bash-280R# bash-280R# sed 's/^ *//' foofile > foofile.use bash-280R# cat foofile.use some text some text some text... (6 Replies)
Discussion started by: laser
6 Replies

10. Shell Programming and Scripting

How to use sed to remove html tags including text between them

How to use sed to remove html tags including text between them? Example: User <b> rolvak </b> is stupid. It does not using <b>OOP</b>! and should output: User is stupid. It does not using ! Thank you.. (2 Replies)
Discussion started by: alphagon
2 Replies
Login or Register to Ask a Question