last char from a string


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting last char from a string
# 1  
Old 12-07-2007
last char from a string

i have a script that reads a plain text file. (its a ksh, and i can use bash also)
each line of the file is a fullpath of a file. that makes the list huge.
i need to add a functionalitie to that script, i have to be able to add
Code:
/usr/*

or
Code:
/usr/

and with that reference all the files and folders inside.
so i need to get the last char from the line and do a case to match / or *, and use the default for the nomal fullpath and file
how do i get that last character ?
# 2  
Old 12-07-2007
Pattern-matching for fun and profit!

Code:
# x="/unix/*"
# y="/unix/"
# z="/unix"
# [[ $x == *@(/|\*) ]] && echo TRUE || echo FALSE
TRUE
# [[ $y == *@(/|\*) ]] && echo TRUE || echo FALSE
TRUE
# [[ $z == *@(/|\*) ]] && echo TRUE || echo FALSE
FALSE

# 3  
Old 12-07-2007
ok. i never saw something like that Smilie

after some time trying to understand that, some googling, and some more thinking, i think i got what it does
thats a nice feature i never read about !!
i am sure alot of people will scream at me cause is really hard to read, but it does the trick (i will have to make a 10 lines comment for one if condition Smilie )

thanks for the reply
# 4  
Old 12-07-2007
This should do it:
Code:
case "$line" in
  *\*) echo "It ends in asterisk";;
  */) echo "It ends in slash";;
  *) echo "It ends in neither slash nor asterisk";;
esac

If you have issues with asterisks being expanded into filename lists, then you can precede the above with "set -f" (disable filename expansion), and add a "set +f" after (to reinstate filename expansion).
# 5  
Old 12-07-2007
i dont know about that case, i will have to run some tests, but i have a feeling it can give me some false positives, can i use a regular expr ? so i can make it ^.*/$ or ^.*/\*$,
# 6  
Old 12-07-2007
Yep - you can use regular expressions like "^" to anchor it to the start of a line, "^[a-z]" to anchor it to a line starting with a letter, or any other variation you choose.
(It's Korn and POSIX shell syntax, but I think it's good for Bash too. I'm not sure how much of it works with basic Bourne shell though.)
Basically have a play; it's like a stuck vending machine - you just have to find the right place to give it a thump.
# 7  
Old 12-07-2007
Hi, prowla
Quote:
Originally Posted by prowla
Yep - you can use regular expressions like "^" to anchor it to the start of a line, "^[a-z]" to anchor it to a line starting with a letter, or any other variation you choose.
(It's Korn and POSIX shell syntax, but I think it's good for Bash too. I'm not sure how much of it works with basic Bourne shell though.)
On my GNU/Linux (Debian), bash and pdksh case expressions are filename expressions, not regular expressions:
Quote:
case word in [ [(] pattern [| pattern] ... ) list ;; ] ... esac
The case statement attempts to match word against the specified
patterns; the list associated with the first successfully
matched pattern is executed. Patterns used in case statements
are the same as those used for file name patterns except that
the restrictions regarding . and / are dropped.
-- man ksh
and
Quote:
case word in [ [(] pattern [ | pattern ] ... ) list ;; ] ... esac
A case command first expands word, and tries to match it against
each pattern in turn, using the same matching rules as for path-
name expansion (see Pathname Expansion below) ...
-- man bash
Is this different on your system? ... cheers, drl
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Programming

C++ Using open on a string instead of char*

I am using ifstream to open a file using std::fstream::open void open ( const char * filename, ios_base::openmode mode = ios_base::in ); However I want to use a string instead of a char* as follows but having a problem on how to do this string val_ifmodl = “fred.modl” ifstream ifs_modl;... (2 Replies)
Discussion started by: kristinu
2 Replies

2. Programming

Cast from String to char

Hello, This is my code: i'd like to like to add getenv("MYLIB") in the first case of my buffer inside of '1' , should i do the cast ? and how please ? Thank you. (1 Reply)
Discussion started by: chercheur857
1 Replies

3. Programming

PERL \c char in the string

Hi guys, I am stuck up in a situation. I have a SUN box with certain logs which I need to parse to draw a report using Perl. Now, when I load the text file using a perl degugger to see how the text looks like when the first line of the log file is read in a variable. below is the snapshot of... (2 Replies)
Discussion started by: Asteroid
2 Replies

4. Shell Programming and Scripting

How to loop through every char in a string

for example this string: gLZMQp8i Loop become easy if we add space between each char, How to do it? or other solutions are welcome. (9 Replies)
Discussion started by: honglus
9 Replies

5. Shell Programming and Scripting

Need to print only selected char in a string..?

Hi, I want to print particular chars in a string. for example ie., consider " dear,. roopa$#09%~`';']" as the example string. Here, I want to print only alphanumeric chars.. suppose , if i want only alphanumeric... value would be "dear roopa09" suppose , if i want some spl char(,) with... (2 Replies)
Discussion started by: balan_mca
2 Replies

6. Shell Programming and Scripting

Parsing char string

I am stumped! I need to parse an input parameter to a script that has the form '-Ort'. I basically need 'O', 'r' and 't', i.e. the individual characters in the string parsed. Since there are no delimiters, I don't know how awk could do this. Can someone tell how to do this, this should be a... (5 Replies)
Discussion started by: ALTRUNVRSOFLN
5 Replies

7. Shell Programming and Scripting

how to get number char from a string

for example: i hav a string like : /rmsprd/arch01/rmsprd/rmsprdarch72736.log how I can extract my_num=72736? I know I can echo "/rmsprd/arch01/rmsprd/rmsprdarch72736.log" | tr "/" " " | awk '{ print $4 }' to get rmsprdarch72736.log (4 Replies)
Discussion started by: netbanker
4 Replies

8. Programming

replacing char with string

how we can replace char with a string example char *a="a.s" so finally what i ant to do raplace a with ant and s sree so in my array a i want to store the value as "ant.sree" thank u in advance (1 Reply)
Discussion started by: phani_sree
1 Replies

9. UNIX for Dummies Questions & Answers

string of 7 char length always...

Hi, I know, particular value in the variable should always be of lenth 7 , but the value that is present in thevariable might be of any no.of characters less than or equal to 7... if the no.of characters in the variable is less than 7, I want to add, zeroes at the starting of the field.. How can... (3 Replies)
Discussion started by: thanuman
3 Replies

10. Programming

Compare Char to String

This is actually a c++ question... Basically I am creating a program that asks for five characters. I have a dictionary file containing tons of words no long than five letters long, on a seperate line. I want to be able to take the five inputted letters and compare them to the words in the file... (3 Replies)
Discussion started by: Phobos
3 Replies
Login or Register to Ask a Question