How to extract string from filename

Rob Harris robh at
Wed Jul 29 14:39:19 UTC 2015

Linux has or can have apache server running to give access to PHP, and I can 
see that working better using the explode(string, separator-char) command 
using the _ as separator,

zz=explode(string, char);

this gives an array of sub-string without the _'s,  and you need the second 
to last.  There's another function to count elements in an array,  so x-1 
where x is the number of elements.  Might be x-2 as first element is 0.

I oculd get more specific if I dipped into all my old, but still used, PHP 

implode(array, separator) like zz2=implode(array, char), can put it back as 
a long string separated by the char.

I love the relative simplicity of PHP for all this.

It can suck in an entire file into a string then save the modified string to 
a new, or back to the old, file.

You'd use .mp3 as separator in this first instance.

Hth, BobH.

----- Original Message ----- 
From: "Tony Baechler" <tony at>
To: "Linux for blind general discussion" <blinux-list at>
Sent: Wednesday, July 29, 2015 12:13 PM
Subject: How to extract string from filename

Hi all,

The recent discussion on shell scripts got me thinking.  A couple of posters
invited people to post problems they're having with scripts to the list, so
here goes.

I have not actually written a script for this because I'm not sure how to go
about it.  I would normally use cut, but I need to cut from right to left.
The cut help doesn't indicate a way to do this.  You can only cut from the
beginning of the line or a range of bytes.  The problem is each line
(filenames, to be exact) are of different lengths, so it's impossible to
know what range of bytes I need.

What I'm trying to do is extract the BBC PID from the downloaded files.
It's a lower case alphanumeric string which starts with a letter and is
eight characters.  In my case, the first letter is always "b" or "p," so if
I could use something like grep to just extract the first lower case letter
followed by a number up to the next underscore, that would be good.  I don't
think grep will just print a matching phrase, only the matching line.  Here
are some example filenames:


As you can see, they all follow a similar format.  If I could go from right
to left, I would simply cut "_default.mp3" and extract the preceeding 8
bytes, but I can't figure out how.  What I'm trying to do is first extract
the PIDs, hopefully preserving the filenames in the process.  Once they are
extracted (or printed to stdout), I want to use wget to download the BBC
programme page.  If you go to, you'll get a
web page displaying the broadcast date, description and notes.  I would like
to download those pages.

Any help with this would be greatly appreciated.  Thanks in advance.

Tony Baechler, Baechler Access Technology Services
Putting accessibility at the forefront of technology
mailto:bats at
Phone: 1-619-746-8310   Fax: 1-619-449-9898

Blinux-list mailing list
Blinux-list at 

More information about the Blinux-list mailing list