I want to remove only all inline comments with pattern /*...*/ but not multi line comments
[...]
I knew using sed will work but I am new with it.
You are right, sed is the correct tool for virtually absolutely everything, including what you want to do. ;-))
Here is the naive approach, which will work on your example:
The (conceivable) problem with this approach is that regexps are "greedy", which means that always the longest-possible match is selected. That means: the above regexp selects "/*", followed by any number of any characters, followed by "*/". In case you have several comments in one line like this:
The regexp would match the text marked in bold:
In case you need to take care of this (perhaps rather rare) possibility you will have to refine the way you match the characters in between the introductory comment sequence and the comment-end-sequence. For instance:
This will match "/*", followed by any number of any characters save for "/" or "*", followed by a "*/". This is better and will work on the previous example but will be fooled if a single "/" or "*" appears in the comments like this input:
You can put more work into it and refine the regexp even further but ultimately there will be (in a strict sense) no solution to your problem because a regexp engine (like sed is in the core) cannot replace a parser. See here for a more thorough discussion of this subject.
This is a case for a mimimum match. With perl:
The *? is the minimum match, as opposed to the greedy *. /\*.*?\*/ is a minimum amount of (. = any) characters between /* and */.
--- Post updated at 21:43 ---
The following should even eliminate /* ... */ that span over multiple lines:
You are right: non-greedy matching takes care of a few cases. Still, what i said about regexps being unable to parse still stands. For instance, your perl-program would have problems with:
I admit, this (and some more cases i could cite) are fringe. Maybe the thread-O/P will never encounter any of these. But again, it is - in a strict sense - impossible to overcome all of these problems (some of them, yes, but not all) because a regexp engine cannot work as a parser.
I hope this helps.
bakunin
These 2 Users Gave Thanks to bakunin For This Post:
The bash below executes and does find all the .bam files in each R_2019 folder. However set -x shows that the .bam extension only gets removed from one .bam file in each folder (appears to be the last in each). Why is it not removing the extension from each (this is $SAMPLE)? Thank you :).
set... (4 Replies)
Discussion started by: cmccabe
4 Replies
2. Post Here to Contact Site Administrators and Moderators
In this thread: /shell-programming-and-scripting/255687-organizing-text-file-capital-names-capital-word-capital-word.html (sorry i cant use links)
that is not an example, those are real students names with real student login id's for the college i am attending and i am on that list. Please... (3 Replies)
Had increased FS system size (sample_lv) on particular disks hdisk189 hdisk190 in a shared FS
but unfortunately given addnl size occupies the space on other disks hdisk78 hdisk40 too
In case, need to remove the addnl lv size occupied on hdisk78 hdisk40. How to achieve it. Pls advice.
... (3 Replies)
Hi guys,
I need to write a script so that when i execute the "rm" command, the file mentioned need to be copied to other folder and then be deleted. this should be done in back ground. can you please help me out?? (1 Reply)
Hi all,
I want to remove the remove bracket sign ( ) and put in the separate column I also want to remove the repeated entry like in first row in below input (PA156) is repeated
ESR1 (PA156) leflunomide (PA450192) (PA156) leflunomide (PA450192)
CHST3 (PA26503) docetaxel... (2 Replies)
not sure what is this but any can help me delete this ^I
cat -A file.txt
CLAS^I^I|890^I|7,10,12,341,305,308,29,54^M$
LCLS^I^I|891^I|7,10,12,341,305,308,29,54^M$
MURB^I^I|892^I|7,10,12,341,305,308,29,54^M$
LATI^I^I|893^I|7,10,12,341,305,308,29,54^M$
i want to remove the ^I^I... (2 Replies)
My file has varied width references:
width=10%
style=width:5%
width:1506%
width:99.58%
so I'm trying clear all the width calls with one procedure:
's/width= *%//' and 's/width=*%//'but neither is working. (6 Replies)
hello,
Sometimes I need to remove all the files except one or more.I mean, there are 90 files and I want to remove 88 of them. how can i do that?is it possible to tell the "rm" command not to remove specified files? (4 Replies)
hi, i am on aix. i used smitty to remove a user..
but then found that its directory still exists....
so i have to remove the directory manually...
am i doing it the right way? (2 Replies)