Match exactly a string


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Match exactly a string
# 8  
Old 07-04-2017
I think your regular expression is correct.
It uses perl extensions, and I see that some perl extensions have found their way into the Linux RE and ERESmilie
Code:
# grep '\s\s\s' file
this.something    =='something'.that
this.something    == 'something'.that
this.something    ==    'something'.that
egrep '\s\s\s' file
this.something    =='something'.that
this.something    == 'something'.that
this.something    ==    'something'.that

Is this compliant with standards? Don, your valuable opinion?

I stick to perl for demonstration.
Your problem might be embedded perl/sed/grep code.
Within 'embedded' code you need to escape a ' as '\''.
Code:
perl -lne '/(\w+)\s*(==)\s*(['\''"]?\w+["'\'']?)/ and print' file

Perl even allows to print the match in each ( )
Code:
perl -lne '/(\w+)\s*(==)\s*(['\''"]?\w+["'\'']?)/ and print "($1) ($2) ($3)"' file

# 9  
Old 07-04-2017
Quote:
Originally Posted by MadeInGermany
I think your regular expression is correct.
It uses perl extensions, and I see that some perl extensions have found their way into the Linux RE and ERESmilie
Code:
# grep '\s\s\s' file
this.something    =='something'.that
this.something    == 'something'.that
this.something    ==    'something'.that
egrep '\s\s\s' file
this.something    =='something'.that
this.something    == 'something'.that
this.something    ==    'something'.that

Is this compliant with standards? Don, your valuable opinion?

... ... ...
No it is not. The standard doesn't use or mention perl REs in general nor \s in particular.

Utilities in the standard using basic REs (AKA BREs) such as grep (without -F and -E), ed, ex, and sed don't even have the common C backslash escapes in REs. Except for awk and lex, the same is true for utilities in the standard using extended REs (AKA EREs). The awk and lex utilities do require that the C escapes for the alert (\a), backspace (\b), form feed (\f), new line (\n), carriage return (\r), tab (\t), and vertical tab (\v) characters be recognized in EREs. In all other utilities, the standard assumes that the literal characters (rather than backslash escape representations of them) will be used in REs. The standard also allows use of character class expressions (e.g., [[:space:]]).
This User Gave Thanks to Don Cragun For This Post:
# 10  
Old 07-05-2017
Quote:
It doesn't consider <TAB> chars as those were not mentioned in post#1 nor in the examples. Try [[:space:]]* in lieu of the two * in my proposal.
True I'm sorry.Smilie

Adding [[:space::]] worked just fine.

Many thanks.

Hi @MadeInGermany,

Thanks for your inputs.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Help match the exact string

I just want to match "binutils1_test" only, and print the match line only lyang001@lyang001-OptiPlex-9010:/tmp$ cat file zbinutils1_test bbinutils1_test binutils1_test w-binutils1_test lyang001@lyang001-OptiPlex-9010:/tmp$ cat file |grep -w 'binutils1_test' ... (7 Replies)
Discussion started by: yanglei_fage
7 Replies

2. Shell Programming and Scripting

Get the exact match of the string!

Hi All, I am breaking my head in trying to get a command that will exactly match my given string. I have searched net and found few of the options - grep -F $string file grep -x $string file grep "^${string}$" file awk '/"${string}"/ {print $0}' file strangely nothing seems to... (3 Replies)
Discussion started by: dips_ag
3 Replies

3. Shell Programming and Scripting

awk : match the string and string with the quotes :

Hi all, Here is the data file: - want to match only lan3 in the output . - not lan3:1 file : OPERATING_SYSTEM=HP-UX LOOPBACK_ADDRESS=127.0.0.1 INTERFACE_NAME="lan3" IP_ADDRESS="10.53.52.241" SUBNET_MASK="255.255.255.192" BROADCAST_ADDRESS="" INTERFACE_STATE=""... (2 Replies)
Discussion started by: rveri
2 Replies

4. Shell Programming and Scripting

Match a string but with little difference

I want to output the records matched with a string like "abcdefg", but with one letter difference at any position. Can I do this with awk or grep? Thank you! (1 Reply)
Discussion started by: xshang
1 Replies

5. Shell Programming and Scripting

How to print everything after a string match

Hi all, I'm trying to do some work on the authorized_keys file to do a check if there's any information after the hash key.. At the end of the hash key's in the file, there can be an = or == Is there a way to check if anything exists after these equals and if so print it out or else print... (2 Replies)
Discussion started by: Jazmania
2 Replies

6. Shell Programming and Scripting

How can I match the particular character in the string?

Hi, I want to check out a word in the text file and generate a clear report for me to see... The text file content: Content: ............ 20120608: 20120608: ............ 20120608: .......... 2012031201: , hime] End of the file My expected output is: Full TXT: manatsu TXT:... (3 Replies)
Discussion started by: meroko
3 Replies

7. Shell Programming and Scripting

pattern match in a string

Hello, Please see below line code: #!/bin/ksh set -x /usr/bin/cat /home/temp |while read line do if ] then echo "matched" else echo "nope" fi done content of filr temp is as below (4 Replies)
Discussion started by: skhichi
4 Replies

8. UNIX for Dummies Questions & Answers

How do mask off the string that match my value?

Hi, I have a file like following, aaabb aaavv bbdddaaab fgdgjhaa bfd 12352aa dgs1xaf sdgsdyg4 How can i get the output below(mask off all the line that have "a") by using vim #aaabb #aaavv #bbdddaaab #fgdgjhaa bfd #12352aa (4 Replies)
Discussion started by: 793589
4 Replies

9. Shell Programming and Scripting

exact string match ; search and print match

I am trying to match a pattern exactly in a shell script. I have tried two methods awk '/\<mpath${CURR_MP}\>/{print $1 $2}' multipath perl -ne '/\bmpath${CURR_MP}\b/ and print' /var/tmp/multipath Both these methods require that I use the escape character. I am guessing that is why... (8 Replies)
Discussion started by: bash_in_my_head
8 Replies

10. Shell Programming and Scripting

Perl: Better way to match string within a string

Hi, I'm trying to get one field out of many as follows: A string of multiple fields separated with "/" characters: "/ab=12/cd=34/12=ab/34=cd/ef=pick-this.one/gh=blah/ij=something/" I want to pick up the field "ef=pick-this.one" which has no regular pattern except it starts with "ef=xxxx"... (3 Replies)
Discussion started by: Juha
3 Replies
Login or Register to Ask a Question