[BASH] Allow name with spaces (regex)


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting [BASH] Allow name with spaces (regex)
# 1  
Old 12-27-2011
[BASH] Allow name with spaces (regex)

Hey all,

I have a very simple regular expression that I use when I want to allow only letters with spaces. (I know this regex has a lot of shortcomings, but I'm still trying to learn them)

Code:
isAlpha='^[a-zA-Z\s]*$'

However, when I bring this over to BASH it doesn't allow me to enter spaces.

I use the following code to produce a variable, which I then check if check is empty or not:
Code:
check=`echo $name | sed "s/\($isAlpha\)//"`

Any suggestions are greatly appreciated.

---------- Post updated at 07:52 PM ---------- Previous update was at 07:32 PM ----------

Sorry Scott,

When I say enter spaces I mean if I entered the following name:

John James Doe

That should be a valid match, but it isn't. Instead I have to enter

JohnJamesDoe (no spaces)

For it to be valid. I would like to be able to enter a name with a space (as in example 1)

In regards to the "remembered expression", I was following some online tutorials and that's how it showed me. If it is incorrect, I would appreciate it if you could show me the right way.

[Edit]: I did hit "post reply" but it just edited my main post and appeared to delete Scott's post... Sorry for the confusion.

Last edited by whyte_rhyno; 12-27-2011 at 03:54 PM.. Reason: Something went terribly wrong. Sorry.
# 2  
Old 12-27-2011
Yes, I got it! Too much Vino over Christmas, I think Smilie

Anyway, this \s stuff doesn't work for me.

Perhaps change the "\s" to " \t" (space \t).

Your sed could also change, to:
Code:
sed "s/$isAlpha//g"

Or you could just use "grep -v $isAlpha" instead of sed.

edit: This is fun Smilie I deleted my post, no need to worry there
This User Gave Thanks to Scott For This Post:
# 3  
Old 12-27-2011
Quote:
Originally Posted by Scott
Yes, I got it! Too much Vino over Christmas, I think Smilie

Anyway, this \s stuff doesn't work for me.

Perhaps change the "\s" to " \t" (space \t).

Your sed could also change, to:
Code:
sed "s/$isAlpha//g"

Or you could just use "grep -v $isAlpha" instead of sed.

edit: This is fun Smilie I deleted my post, no need to worry there

Haha, I wondered what I had done!

Anyway, that " /t" works a treat. Just what I needed.

Thank you very much!Smilie
# 4  
Old 12-27-2011
You can check this with bash itself, without invoking an external command at all. An example:

Code:
var='John Doe'
[[ $var =~ ^[[:alpha:][:space:]]*$ ]] && echo ok

without using bash's [[ you have options like so:

Code:
case "$var" in *[^A-Za-z\ ]*) echo illegal;; *) echo ok;; esac

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Regex with spaces

I have a number of files that I need to return a yes for this command. CDATE="Feb" if ] && $CDATE="Feb" ]]; then echo "yes";fi However, the files look like this: CAR LIST DIRECTORY.TXT CHRYSLER LIST DIRECTORY.TXT Apparently the files are not picked up because of spaces. Can... (5 Replies)
Discussion started by: newbie2010
5 Replies

2. Shell Programming and Scripting

Using RegEx with variable within bash if [[ ]]

I stumbled upon a problem, which I simplified to this: There is a list of numbers, stored in variable $LIST, lets use `seq 5 25` for demonstration. There is a number that should be compared against this list. For demonstration I use user input - read VALUE I am trying to compare RegEx... (2 Replies)
Discussion started by: Zorbeg
2 Replies

3. UNIX for Dummies Questions & Answers

Regex for (a|b) in bash

I am trying to find files using the following by using simple bash script: if -2014 ]]; then echo "yes";fi What I need to find are any files with date 08-**-2014 so August 2014 any files. I can use if -2014 ]]; then echo "yes";fi That works fine. How do I get files beginning with 08... (1 Reply)
Discussion started by: newbie2010
1 Replies

4. UNIX for Dummies Questions & Answers

Need help with Regex for bash

Hi, I am trying to match this word: hexagon-bx.mydomain.com with regex. I have tried this: "\.*]*$" So far I have not been successful. I also need to make sure that the regex will match words that just have lowercase letters and numbers in them, such as camera01. How can I create such an... (5 Replies)
Discussion started by: newbie2010
5 Replies

5. Shell Programming and Scripting

Hi im new to bash scripting I want to know what does the regex expression do ??

# check host value regex='^(||1|2|25)(\.(||1|2|25)){3}$' if ')" != "" ]; then if ]; then echo host $host not found exit 4 fi elif ]; then echo $host is an invalid host address exit 5 fi (1 Reply)
Discussion started by: kevin298
1 Replies

6. Shell Programming and Scripting

Bash regex help

I've been using the following regex below in a bash script on RHEL 5.5 using version GNU bash, version 3.2.25(1)-release I've tried using the script on RHEL 6.3 which uses GNU bash, version 4.1.2(1)-release I assume there's been alot of changes to bash since that's quite a jump in revisions.... (12 Replies)
Discussion started by: woodson2
12 Replies

7. Shell Programming and Scripting

Bash regex

Hello everybody, I'm clearly not an expert in bash scripting as I've written maybe less than 10 scripts in my life. I'm trying to strip an xml string removing every tag in it. I'm using bash substitution to do so, but apparently I missed something about what is a regex for bash ... As an... (4 Replies)
Discussion started by: kerloi
4 Replies

8. Shell Programming and Scripting

[BASH/SH] Regex/Rematching Problems

Hi anyone, since Sunday I try to create a schellscript that reads the last 10 lines of text out of a log and parses the guid's of the entrys in there. The log looks like this: ClienUserinfo: ... \cl_guid\XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\...i tried to parse it like this: for line in $(tail -n 10... (18 Replies)
Discussion started by: s0lll0s
18 Replies

9. Shell Programming and Scripting

bash regex =~ case insensetive, possible?

It can get very annoying that bash regex =~ is case-sensetive, is there a way to set it to be case-insensetive? if ]; then echo match else echo no match fi (8 Replies)
Discussion started by: TehOne
8 Replies

10. Shell Programming and Scripting

regex test in bash

Hi I want to do a regex test and branch based on the test result, but this doesn't seems to work :confused: if \) ]] then echo success else echo failed fi (1 Reply)
Discussion started by: subin_bala
1 Replies
Login or Register to Ask a Question