First of all let it be said that I hate sed. Every time I think I've got it figured out it proves me wrong. There, now with that out of the way here's my problem that I'm hoping one of you smart people can solve:
I have a file full of lines like this:
I want to remove the /* and */ everything between them too but leave the rest of the line intact.
Unfortunately this is proving really difficult since, based on the roughly 15 threads I've read about the topic of sed, both / and * seem to be special characters so using them as the search critiera is proving difficult for me to figure out. This is the closest I've gotten:
But this only searches for the * and not both. It also wipes out everything to the right of the first * so that's not going to work.
The following will work with the data sample you provided. However, it will not work with comments that span multiple lines. If you need something more complicated, you might want to look into using a tool that's familiar with the language in question.
Regards,
Alister
The following will work with the data sample you provided. However, it will not work with comments that span multiple lines. If you need something more complicated, you might want to look into using a tool that's familiar with the language in question.
Regards,
Alister
Alister, you're amazing.
Can you do me one more favor and explain the syntax to me so I'll know for next time?
Can you do me one more favor and explain the syntax to me so I'll know for next time?
After that characterization, how can I refuse.
You are correct in your original post when you say that / and * are both special to sed. However, sed's substitution command allows us to choose a delimiter other than /. For example, the following two commands are functionally identical, each replaces every occurrence of foo with bar:
In the second instance, I chose a pipe symbol, |, instead of the forward slash. The benefit of this choice is that if we need to use literal forward slashes within the s command, we don't have to precede them with a backslash. To change a/c to d/c, first with the default delimiter and then with the pipe symbol instead:
If you can imagine the number of forward slashes in something like a url (http://domain/dir/file), using a different delimiter can improve readability of the command.
While I chose a pipe in those examples, you can choose any character you like except a newline or a backslash. Whatever character you choose, you can still use it within the command, but you'll have to precede it with a backslash.
Breaking down the /\*[^*]*\*/ regular expression: /\*: forward slash followed by a literal asterisk (which needs to be backslashed since it's normally a special character) [^*]*: The expression in brackets means anything except an asterisk (which does not have to be backslashed because special characters are not special within the bracket expression). The asterisk that follows the closing bracket is indeed special. As a whole, this fragment means zero or more non-asterisks. This is used to ensure that we don't go past the end of the comment, which ends with a */ sequence. \*/: This matches the */ sequence at the end of the comment. Backslash escape the asterisk so it's taken literally and follow it with the forward slash (which isn't special here and does not require a preceding backslash because we're using the pipe as a delimiter).
Regards,
Alister
---------- Post updated at 08:25 PM ---------- Previous update was at 08:23 PM ----------
Quote:
Originally Posted by Yoda
/ - Begin search pattern
/ - End search pattern
Thank you for helping with the explanation, Yoda. If I had known you were there, I would've saved myself some time. However, you misinterpreted the slashes at the beginning and the end. They are literal characters. The pipes delimit the regular expression.
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)