read a string from its end to its start and stop when you find a specific character


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting read a string from its end to its start and stop when you find a specific character
# 1  
Old 08-31-2010
Question read a string from its end to its start and stop when you find a specific character

How can I do this? Actually I have a file which contains a path
e.g.
/home/john/Music/hello.mp3
and I want to take only the filename (hello.mp3) So, I need to read the file from its end to its start till the character "/"
Is this possible?
Thanks, I am sure you'll not disappoint me here!
Oh, yes, you are the best!Smilie
# 2  
Old 08-31-2010
basename
Code:
basename /home/john/Music/hello.mp3

# 3  
Old 08-31-2010
THIS WAS FAAAAAAAAAAAAST
# 4  
Old 08-31-2010
Assuming your file contains only one path:
Code:
basename $(cat file)

# 5  
Old 08-31-2010
The fact that I am 3 years now to Unix and there are sooo many unknows commands to me is hilarious.
# 6  
Old 08-31-2010
Using Parameter Substitution

a='/home/john/Music/hello.mp3'; echo ${a##*/}

much faster than calling the external command basename

in general

{text#pattern} removes the shortest match of pattern from the front of text
{text##pattern} removes the longest match of pattern from the front of text
{text%pattern} removes the shortest match of pattern from the back of text
{text%%pattern} removes the longest match of pattern from the back of text

Mike

Last edited by Michael Stora; 08-31-2010 at 06:30 PM.. Reason: / does not need escaping like \ does
# 7  
Old 08-31-2010
Quote:
Originally Posted by Michael Stora
a='/home/john/Music/hello.mp3'; echo ${a##*//}

much faster than calling the external command basename

in general

{text#pattern} removes the shortest match of pattern from the front of text
{text##pattern} removes the longest match of pattern from the front of text
{text%pattern} removes the shortest match of pattern from the back of text
{text%%pattern} removes the longest match of pattern from the back of text

Mike
But 90% of people will have no idea what this thing does, while seeing "basename /some/path" you can at least guess. And when you want to be sure you just do "man basename" and everything is clear. Don't obfuscate when it is not nessesary...
This User Gave Thanks to bartus11 For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Search a String between start and end of a block in a file

Hi, I have a scenario where I want to display the output based on the pattern search between the start and end of a block in a file, we can have multiple start and end blocks in a file. Example give below, we need to search between the start block abc and end block def in a file, after that... (5 Replies)
Discussion started by: G.K.K
5 Replies

2. Shell Programming and Scripting

Find between lines start and end: awk with bash variables

I have a file as follows: 0 1056 85540 414329 774485 1208487 1657519 2102753 2561259 3037737 3458144 3993019 4417959 4809964 5261890 5798778 6254146 I want to find all lines between a specified start and end tag. (6 Replies)
Discussion started by: jamie_123
6 Replies

3. Shell Programming and Scripting

Read command stop on either EOF or a specific line

I'm trying to stop reading a file until the end of the file is reached or a defined delimiter line is reached. Some how I need to test the fail state of the last 2 commands, not just the last command. echo -e "hello\ngoodbye\n####\ntesting" | while read line; ]; do echo "$line"; done hello... (4 Replies)
Discussion started by: Michael Stora
4 Replies

4. Shell Programming and Scripting

Remove lines between the start string and end string including start and end string Python

Hi, I am trying to remove lines once a string is found till another string is found including the start string and end string. I want to basically grab all the lines starting with color (closing bracket). PS: The line after the closing bracket for color could be anything (currently 'more').... (1 Reply)
Discussion started by: Dabheeruz
1 Replies

5. Shell Programming and Scripting

how to specify start and stop of a search string

I am trying to extract a string from a line of text. Currently I am using grep -o 'startofstring(.........' The string is not always the same size. The string I'm trying to extract starts with 'test(' ends with ')'. ex "blah,blah,blah,test(stringoftext),blah blah" How do I... (4 Replies)
Discussion started by: jeepguy
4 Replies

6. UNIX for Dummies Questions & Answers

Find Quarter Start and End Dates

Dear Members, Depending on the current date i should find out the start and end dates of the quarter. ex: Today date is 14-Nov-2011 then Quarter start date should be Oct 1 2011 and Quarter End date should be Dec 31 2011. How can i do this? Thanks Sandeep (1 Reply)
Discussion started by: sandeep_1105
1 Replies

7. Shell Programming and Scripting

Appending string, variable to file at the start and string at end

Hi , I have below file with 13 columns. I need 2-13 columns seperated by comma and I want to append each row with a string "INSERT INTO xxx" in the begining as 1st column and then a variable "$node" and then $2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13 and at the end another string " ; COMMIT;" ... (4 Replies)
Discussion started by: Vaddadi
4 Replies

8. UNIX for Dummies Questions & Answers

Extract a specific number from an XML file based on the start and end tags

Hello People, I have the following contents in an XML file ........... ........... .......... ........... <Details = "Sample Details"> <Name>Bob</Name> <Age>34</Age> <Address>CA</Address> <ContactNumber>1234</ContactNumber> </Details> ........... ............. .............. (4 Replies)
Discussion started by: sushant172
4 Replies

9. Shell Programming and Scripting

String as both start and end anchors in awk

Not sure if the title of this thread makes sense, but hopefully my explanation will. I'm using awk to print some stats from an apache accesslog. I would like to specify the regexp condition where only the two root pages of "index.html" and "/" are counted in my results. What I can't figure out... (3 Replies)
Discussion started by: picassolsus
3 Replies

10. Shell Programming and Scripting

cut from a particular character to the end of the string

Hi All, I have a string like "9633C01302_2". I need to extract the number(02) after "13" and before "_" and the number coming after "13" and before "_" is not constant, it keeps on changing... Can some one plz help me wth the command.. i tried this echo "9633C01302_2" | cut -d'_' -f1 ..But... (2 Replies)
Discussion started by: grajesh_955
2 Replies
Login or Register to Ask a Question