Re: how to match parenthesis in sed
H.S. wrote:
> Hello,
>
> I am renaming files by removing parentheses from them. These are image
> files which were sorted in Windows (by placing them in the desired order
> and then by renaming them in batch mode in Windows explorer -- couldn't
> do this in Linux).
>
> Here is an example:
> 20030113_Lohri_ (107).jpg -> is to be named as:
> 20030113_Lohri_ 107.jpg
>
> This I can accomplish by:
> $> nn=`echo "20030113_Lohri_ (107).jpg" | tr -d "()"`; echo $nn
>
> which spits out the modified name (in variable nn) and the output is:
> 20030113_Lohri_ 107.jpg
>
> However, I also want to remove that space preceding the opening
> parenthesis in the input filename. I am trying to do this via sed,
> something like (the following is one long line):
> $> nn=`echo "20030113_Lohri_ (107).jpg" | sed -e
> s/\(.*\)\.[Jj][Pp][Gg]/\1.jpg/`;
>
> However, this is not working. The above should give just the basename
> and then I add an extension of ".jpg" to it. I am guessing the
> parentheses in the input filename is causing the problem. How do I match
> parenthesis in sed then?
>
> thanks,
> ->HS
>
>
There was a mistake in my earlier sed command. The following seems to work:
nn2=`echo "$fn" | sed -e 's%\(.*\)\
(\([0-9][0-9][0-9]\))\.[Jj][Pp][Gg]%\\1\2.jpg%'`;
where $fn is the input filename and $nn2 will be the new filename.
->HS
Reply to: